Ordenar double lista

2 respostas
D

Galera

Eu tenho uma lista de objetos de uma classe, e nela cada objeto tem um double..
preciso ordenar os registros em ordem pelo double..

exemplo

Pessoa p = new Pessoa();
p.setNome("joao"):
p.setPeso(70.5);

Pessoa p2 = new Pessoa();
p2.setNome("Pedro"):
p2.setPeso(87.5);

Pessoa p3 = new Pessoa();
p3.setNome("zé"):
p3.setPeso(54.5);

List<Pessoa> ps = new ArrayList<Pessoa>();
ps.add(p1);
ps.add(p2);
ps.add(p3);

Agora com essa lista trazer

Zé
Joao
Pedro

vlw!

2 Respostas

S

Você precisa utilizar o método Collections.sort e a classe Comparator. Além disso você precisa comparar doubles do jeito certo ou vai ter surpresas.

W

Duas formas onde uma você modificar a classe Pessoa para implementar Comparable ou Comparator, ou uma em que você cria uma nova classe que implementa Comparator ex:

Modificando Pessoa:

class Pessoa implements Comparable<Pessoa>
{
    //método especificado pela interface
    public int compareTo(Pessoa p){
        return this.getPeso().compareTo(p.getPeso());//Obs: getPeso() deve retornar Double e não double.
    }
    //resto do codigo...

}

Implementando Comparator em uma classe:

class OrdenaLista implements Comparator<Pessoa>{
    //Metodo da interface
    public int compare(Pessoa a, Pessoa b)
    {
         return a.getPeso().compareTo(b.getPeso());//Obs: getPeso() deve retornar Double e não double.
    }
}

Após isso é preciso ordenar, para isso utiliza-se a classe Collections que possui o metodo sort.

Se a classe Pessoa implementa uma das interfaces:
Collections.sort(ps);//Passa a lista para ser ordenada
Se uma nova classe for criada é necessário passar uma instancia para Collections.sort():

Collections.sort(ps, new OrdenaLista());

Bom é isso.

Criado 21 de fevereiro de 2012
Ultima resposta 21 de fev. de 2012
Respostas 2
Participantes 3