Ordenar uma List contendo Objetos

8 respostas
R

Fala galera…blz?

seguinte, tenho uma List q eh um ArrayList e ela contem varios objetos do tipo Prospecto, q possui alguns atributos do tipo String.

o problema eh q agora preciso ordenar e filtrar essa List de acordo com o atributo selecionado e ainda na ordem q desejam - crescente ou decrescente…

alguem jah fez algo do tipo??

valew pela forca.

8 Respostas

Daniel_Quirino_Olive

Já. Crie um java.util.Comparator (já que você pode ordenar esta lista a partir de atributos diferentes) e use o método java.util.Colletions.sort(List, Comparator).

R

hmm…legal Daniel…
entendi a ideia…

mas teria como dar uma ajudinha com o Comparator? tipo, um algoritmo basico de como ir ordenando uma lista de objetos…

ajudaria bastante…

valew

T

Acho que eu e o Daniel Destro postamos alguma coisa como um “Comparator” genérico aqui no GUJ. Não sei se isso se perdeu no “Big GUJ Crash”.

Daniel_Quirino_Olive
Comparator<MeuObjeto> comparator = new Comparator<MeuObjeto>(){

        public int compare(MeuObjeto a, MeuObjeto b){
                int resultado = -1;
                // ignorando checagens...
                String attributo = a.getAtributo();
                resultado = a.compareTo(b.getAtributo());
                return resultado;
        }

}

Collections.sort(meuArrayList, comparator);
R

valew Daniel…
jah fiz aki e funcionou…

agora, tem algum jeito parecido de fazer o lance de filtrar a lista por um atributo ou teria q fazer “na mao” mesmo?

valew

Daniel_Quirino_Olive

rbarioni:
valew Daniel…
jah fiz aki e funcionou…

agora, tem algum jeito parecido de fazer o lance de filtrar a lista por um atributo ou teria q fazer “na mao” mesmo?

valew

Huh? :?

T

Em C++ o STL disponibiliza, no header <algorithm> , algumas dessas coisas como “filtrar por uma condição”. Mas o Java Collection Framework preferiu não pôr essas coisas mais simples e que podem ser feitas de maneira fácil usando um loop; apenas as coisas mais complexas como “sort”.

R

Amigo… seguinte… utilize isso:

Comparator ordemPrioridade = new BeanComparator(“ordemPrioridade”);
Collections.sort(registrosFiltrados, ordemPrioridade);

onde ordem prioridade é o nome do atributo que está na collection. e este será o ordenador

Criado 12 de julho de 2006
Ultima resposta 24 de jul. de 2006
Respostas 8
Participantes 4