Pessoal, estou com um problema, eu tenho uma classe assim:
publicclassDTO_CentroDistribuicao_ctd{privatedoubledistanciaPedido;privateintctd_CentroDistribuicao_int_PK;privateStringctd_Nome_chr;privateStringctd_Endereco;privateStringctd_Numero;privateStringctd_Complemento;//get set, get set....}
Eu faco uma consulta no meu DB e retorno uma List populada com N posicoes.
Oque eu quero fazer eh ordenar esta lista pela coluna distanciaPedido do tipo Double.
Li a respeito e fiquei sabendo que com o Comparator eh bem facinho. Estou fazendo assim mais esta dando errado:
listCentro.get(i).setDistanciaPedido(application.getDistancia(connection.getInputStream()));
Collections.sort(listCentro,new Comparator<DTO.DTO_CentroDistribuicao_ctd>(){
public int compare(DTO.DTO_CentroDistribuicao_ctd o1, DTO.DTO_CentroDistribuicao_ctd o2){
return o1.getDistanciaPedido().compareTo(o2.getDistanciaPedido());
}
});
Leandro você já tentou orderna usando o ORDER BY no sql? Acho que para ordernar isso é mais facil. Mas vendo o seu código e o que eu entendi, o Collections.sort() já ordena para você.
leandroToledo
Entao mano, este atributo do tipo double ele eh o unico que nao vem do DB :/, eu pego um valor e vou em outra aplicacao e pego o resultado e guardo nesta variavel.
Entao eu nao posso fazer o order by pelo sql…vlvv a ajuda.
VLvv
sergiotaborda
leandroToledo:
Li a respeito e fiquei sabendo que com o Comparator eh bem facinho. Estou fazendo assim mais esta dando errado:
listCentro.get(i).setDistanciaPedido(application.getDistancia(connection.getInputStream()));
Collections.sort(listCentro,new Comparator<DTO.DTO_CentroDistribuicao_ctd>(){
public int compare(DTO.DTO_CentroDistribuicao_ctd o1, DTO.DTO_CentroDistribuicao_ctd o2){
return o1.getDistanciaPedido().compareTo(o2.getDistanciaPedido());
}
});
O seu código parece excelente à primeira vista. não fosse o fato de estar comparando double. Doubles não se comparam assim. Esse é o problema.
Para comparar double ou Double, vc deve usar Double.compare().
O codigo deve ser portanto
Collections.sort(listCentro,new Comparator<DTO.DTO_CentroDistribuicao_ctd>(){
public int compare(DTO.DTO_CentroDistribuicao_ctd o1, DTO.DTO_CentroDistribuicao_ctd o2){
return Double.compare(o1.getDistanciaPedido(),o2.getDistanciaPedido());
}
});