Como ordenar dois campos em um Collections.sort

3 respostas
carlos_maia

Boa tarde, gostaria de saber se alguem sabe como faço pra ordenar dois campos em um Collections.sort.
Por exemplo.
dentro de uma coleçao eu tenho dois campo um id, nome e idade, ai eu quero que fique ordenado por id e idade.
Alguem sabe como devo fazer?

3 Respostas

R

Implemente um Comparator especializado para o seu objeto de negócio:

http://java.sun.com/docs/books/tutorial/collections/algorithms/#sorting

E

Crie uma classe que implemente java.util.Comparator, cujo método compare retorne:

-1 se obj1.id < obj2.id
ou se obj1.id == obj2.id e obj1.idade < obj2.idade
0 se obj1.id == obj2.id e obj1.idade == obj2.idade
+1 se obj1.id > obj2.id
ou se obj1.id == obj2.id e obj1.idade > obj2.idade.

OK?

carlos_maia
Obrigado pessoal, consegui solucionar utilizando o comparador

public class ComparadorIdIdade implements Comparator {

public int compare(Pessoa pessoa1,Pessoa pessoa2) {
int result = pessoa1.getId().compareTo(pessoa2.getId());
        return result == 0 ? pessoa1.getIdade().compareTo(pessoa2.getIdade()) : result;
			
}

}

e  na action utilizei

List colecao= new ArrayList();

colecao.addAll(pessoa.clPessoa());

Collections.sort((List) colecao,new ComparadorIdIdade());

Abraços pessoal e que Deus lhe abençoe

Criado 11 de setembro de 2009
Ultima resposta 14 de set. de 2009
Respostas 3
Participantes 3