Ordenando List

4 respostas
Emerson_Silva

Pessoal, estou com uma dúvida de como ordenar uma List de objetos do banco.

Eu tenho uma entity AutoUf e estou tentando trazer uma list dela ordenada mas não estou conseguindo.

Meu caso é o seguinte…

List<AutoUf> ufs = autoTipoConsulta.getAutosUfs(); for (AutoUf autoUf : ufs) { acForm.getUfs().put( autoUf.getUf() , autoUf.getCodUf() ); }

Já tentei utilizar por exemplo:

Collections.sort(ufs);

Mas ele não deixa pois a minha entity AutoUf não extend a classe que ele pede…

Alguém poderia me ajudar?

4 Respostas

nando0mb

Tenta usar o método iterator http://java.sun.com/javase/6/docs/api/java/util/Iterator.html faz o laço com o hasNext() e depois as regras de negócio.
Abraço

ignacio83

Vc pode fazer de duas maneiras

  1. Implemente a Interface Comparable em AutoUf

  2. Ou crie uma classe que implemente Comparator
    Nesse caso chame o método passando uma instância da classe que implementou Comparator:

Collections.sort(ufs, new SeuComparator());
B

Emerson Silva:
Pessoal, estou com uma dúvida de como ordenar uma List de objetos do banco.

Eu tenho uma entity AutoUf e estou tentando trazer uma list dela ordenada mas não estou conseguindo.

Meu caso é o seguinte…

List<AutoUf> ufs = autoTipoConsulta.getAutosUfs(); for (AutoUf autoUf : ufs) { acForm.getUfs().put( autoUf.getUf() , autoUf.getCodUf() ); }

Já tentei utilizar por exemplo:

Collections.sort(ufs);

Mas ele não deixa pois a minha entity AutoUf não extend a classe que ele pede…

Alguém poderia me ajudar?

Faça sua classe implementar um Comparable

Lavieri

Para que uma classe que vc criou se torne Ordenável, vc precisa implementar Comparable... ou seja...

public class AutoUf implements Serializable, Comparable<AutoUf> {
    private String uf;
    //....

    public int compareTo(AutoUf other) {
        return uf.compareTo(other.uf);
    }
}

assim eu informo, que a minha classe AutoUf, tem ordem natural por UF....

a outra forma de ordenar, quando a classe não é ordenavel, é falar de que forma eu quero ordenar, criando um comparator...

Comparator<AutoUf> porUf = new Comparator<AutoUf>() {
    public int compare(AutoUf o1, AutoUf o2) {
         o1.getUf().compareTo(o2.getUf());
    }
};

Collections.sort(ufs,porUf);
Criado 7 de abril de 2009
Ultima resposta 7 de abr. de 2009
Respostas 4
Participantes 5