Ordenar uma lista de objetos

Galera, tem alguma estrutura de lista q me permita ordenar os elementos dela depois de preenchida??

essa lista sera formada por objetos q criei aki…cada objeto tem alguns valores…

teria como ordenar de acordo com um dos campos do objeto??

valew

   Implementa o método equals no seu objeto dizendo qual atributo que vc vai assumir como chave pra comparar seus objetos e depois implementa da lista que vc quer ordenar

sort(List list, Comparator c)
Sorts the specified list according to the order induced by the specified comparator.

Exemplo

Collections.sort( suaLista, new Comparator() { public int compare( Object a, Object b ) { return( (String)a ).compareToIgnoreCase( (String) b ); } } );

valew pela dica luiz…mas ainda nao caiu a ficha…

eh q preciso ordenar por um capo Timestamp…
eh soh mudar o cast?? onde especifico o campo a ser usado??

  Mas pelo que ?  Dia, mes , ano, ou hora, minuto e segundo?

ordenar pelo Timestamp inteiro…

  É no método equals que vc diz que atributo vai ser sua chave de comparação

public boolean equals(Object obj) { if ((obj instanceof SeuObjeto) && (((SeuObjeto) obj).getSeuAtributo().equals(this.getSeuAtributo()))) { return true; } else { return false; } }

calma lah luiz…

entao preciso sobre-escrever o metodo sort() criando um novo COmparator e tb o metodo equals()??

 hehehehe, isso mesmo :D

hmmmm…

cara, to olhando aki a API, mas ainda nao consegui fazer esse eskema…

vc tem algo feito nesse eskema??

valew pela forca…

Na verdade, você não tem que sobrescrever o método sort() não.

Você precisa escrever uma classe que implemente a interface java.util.Comparator, e que seja capaz de comparar dois objetos… No seu caso, você utiliza esse Timestamp para comparar. Outra opção é a sua classe implementar java.lang.Comparable.

O método Collections.sort() usa ou um Comparator ou o método compareTo() da sua classe para ordenar uma Collection.

[]'s

   Essas outras opções também como o Caio disse :D

hhe…ainda nao foi dessa vez…

fiz o q o Caio disse…minha classe implementa a Comparator e criei o metodo compare

	public int compare(Object o1, Object o2) {
		return ((Log)o1).getDate().compareTo(((Log)o2).getDate());
	}

ele tah devolvendo a comparacao entre os campos Timestamp q kero ordenar…falta ainda alguma coisa??

valew

 Deu o sort na sua lista já, pra ver se ordenou ou não?

Faz o seguinte:


Comparator meuComparator = new Comparator() {

  public int compare(Object o1, Object o2) {
    MeuObjeto m1 = (MeuObjeto) o1;
    MeuObjeto m2 = (MeuObjeto) o2;
    return m1.getTimestamp().compareTo(m2.getTimestamp());
  }

};

Collections.sort(suaLista, meuComparator);

Dai sua list pode ser um ArrayList normal, por exemplo.

Vc pode ainda fazer algumas validações antes de comparar, vai do que vc precisar…

Espero ter ajudado

Fallow

valew TedLoprao…funfou agora!!

valew pelas dicas galera…