Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Mendes Mansur

[Resolvido] Ordenaçao de arraylist com chave secundaria

Recommended Posts

oi pessoal , o meu problema eh o seguinte eu possuo um arraylist tabela

ArrayList<celula> tabela = new ArrayList<celula>();

de um objeto celula

class celula{
       String palavra;
       int arquivo;
       int qtd;
     }

eu consigo ordenar a tabela , mas por apenas um parametro de cada vez,mas eu queria ordenar a tabela da seguinte forma primeiro por palavra e depois por arquivo, por exemplo , se duas palavras forem iguais a primeira a aparecer sera a com o menor arquivo, alguem pode me ajudar?

muito obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

oi pessoal , o meu problema eh o seguinte eu possuo um arraylist tabela

ArrayList<celula> tabela = new ArrayList<celula>();

de um objeto celula

class celula{
       String palavra;
       int arquivo;
       int qtd;
     }

eu consigo ordenar a tabela , mas por apenas um parametro de cada vez,mas eu queria ordenar a tabela da seguinte forma primeiro por palavra e depois por arquivo, por exemplo , se duas palavras forem iguais a primeira a aparecer sera a com o menor arquivo, alguem pode me ajudar?

muito obrigado

 

Se eu entendi bem o seu problema pode ser resolvido com o método sort(). O método sort(), ordena sua Array por modo de comparação. Se for o que realmente você quer vai resolver seu problema.

 

Declaração:

Arrays.sort(lista)

Compartilhar este post


Link para o post
Compartilhar em outros sites

entao eu estou fazendo

Collections.sort(tabela,comparator);

onde comparator eh isso

class PalavraComparator implements Comparator<celula> {
           @Override
   public int compare(celula conta, celula outraConta) {
       return conta.palavra.
               compareTo(outraConta.palavra);
       }
   }    
   PalavraComparator comparator = new PalavraComparator();

mas ai ele ordena apenas por palavra, e nao por palavra e se palavra for igual por arquivo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Dentro do método compare tu pode colocar

 

int compare = conta.palavra.compareTo(outraConta.palavra);
if( compare == 0 )
{
return conta.arquivo - outraConta.palavra;
}
return compare;

Compartilhar este post


Link para o post
Compartilhar em outros sites

muito obrigado tiago , soh uma correcao se alguem for olhar esse topico no codigo do tiago

int compare = conta.palavra.compareTo(outraConta.palavra);
if( compare == 0 )
{
return conta.arquivo - outraConta.ARQUIVO;//<---- troca palavra por arquivo
}
return compare;

 

muito obrigado msm

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.