Em primeiro lugar precisamos escolher qual o critério de ordenação da classe que estará na coleção. No meu exemplo utilizarei esta classe:
Nesta classe temos duas possibilidades. Ordenar pelo atributo idMinhaClasseDto ou valorClasse. Vamos ordenar por valor Classe.
A ordenação exige que esta classe implemente a interface Comparable. Ao implementar, a compilação irá exigir a implementação do método public int compareTo(Object o) .
Este método será responsável pela ordenação. Ao chamar o método sort da sua coleção, será utilizado este método para a ordenação.
Como ele fará isto?
Se o valor retornado for -1 indicará que o objeto ao ser comparado é menor. Se for 0 é igual, e se for 1 é maior, desta forma, o método sort saberá se o objeto que está comparando ficará antes ou depois na coleção.
Como na classe que sugeri queremos ordenar pelo atributo objeto BigDecimal, implementei a classe da seguinte forma:
public int compareTo(Object o) {
return this.getValorClasse().compareTo(((MinhaClasseDto)o).getValorClasse());
}
Vejam que comparei o valor utilizando os métodos da classe. Sendo criativo, podemos fazer que esta ordenação obedeça diversos parâmetros.
Depois disto basta chamar o método sort de sua coleção, como :
MinhaClasseDto[] objeto = {new MinhaClasseDto(),new MinhaClasseDto(),
new MinhaClasseDto(),new MinhaClasseDto()};
objeto[0].setValorClasse(new BigDecimal(0));
objeto[1].setValorClasse(new BigDecimal(45));
objeto[2].setValorClasse(new BigDecimal(2));
objeto[3].setValorClasse(new BigDecimal(-3));
Arrays.sort(objeto);
for(int i=0;i‹bids.length;i++){
System.out.println(bids[i].getIdBid() + " + " + bids[i].getVlBid());
}
Até a proxima. ;-)
Nenhum comentário:
Postar um comentário