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
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…