Duvidas com o comparable

5 respostas
oitathi

Eu tenho uma List de Objetos, e gostaria de saber como q faz a ordenação desta lista por determinado atributo de cada objeto. Eu estou usando a interface comparable deste jeito:

public class Definition implements Comparable {

   private JButton bt1,bt2,bt3,bt4,bt5;
   private String act1, act2, act3, act4, act5;
   private String id;

public int compareTo(Object p) {
        return this.id.compareTo(((Definition) p).id);
}

Mas depois disso, como eu faço para inserir na minha de maneira ordenada?

5 Respostas

ViniGodoy

Dá uma lida: http://www.guj.com.br/posts/list/45985.java#241201

P

Aproveitando o gancho, tenho a seguinte dúvida.

Consegui achar aqui no forúm várias formas de conseguir fazer essa comparação, porém somente dessa forma, ex:

Tipo tenho um array de objetos da classe cliente se pedir para ordenar por nome ,funciona corretamente.

Mas eu gostaria de saber se é possível fazer o seguinte, ter um array de objetos da classes pedido, que tem o atributo que é do tipo da classe cliente, e aí ordernar os pedidos pelo nome dos clientes.

P

oitathi … desculpa

nesse link http://www.guj.com.br/posts/list/24150.java , tem uns exemplos legais

ViniGodoy

Sim, é possível. É só fazer um Comparator que compare pedidos pelo nome dos clientes. Os links já apresentados nesse tópico explicam como.

Mas deve ser algo simples assim:

public class PedidosPorNome implements Comparator<Pedido> { public int compare(Pedido p1, Pedido p2) { return p1.getCliente().getNome().compareTo(p2.getCliente().getNome()); } }

Aí é só usar:

Collections.sort(pedidos, new PedidosPorNome());
P

Sim, é possível. É só fazer um Comparator que compare pedidos pelo nome dos clientes. Os links já apresentados nesse tópico explicam como.

Mas deve ser algo simples assim:

public class PedidosPorNome implements Comparator<Pedido> { public int compare(Pedido p1, Pedido p2) { return p1.getCliente().getNome().compareTo(p2.getCliente().getNome()); } }

Aí é só usar:

Collections.sort(pedidos, new PedidosPorNome());

Vlw … vou testar …:oops:

Criado 7 de julho de 2010
Ultima resposta 13 de jul. de 2010
Respostas 5
Participantes 3