Pessoal, estou tendo um problema com Comparator, preciso comparar valores Double, de ordem crescente, isso consigo, mas alem disso, preciso que os valores que sejam zero venham por ultimo, alguem tem ideia de como posso fazer isso??? estou tentando algo assim:
[code]Collections.sort(anuncios, new Comparator<MeuObjeto>() {
public int compare(MeuObjeto objeto1, MeuObjeto objeto2) {
Não entendi porque o o2 recebi -1, está totalmente fora de minha lógica, estou fazendo a lógica inversa??? achei que sempre o objeto1 que era comparado primeiramente, ai sempre que ele for zero, eu seto o retorno -1, e no seu exemplo, vc coloca o -1 para o objeto 2. Qual é a ordem disso ai???
Se o objeto1 for “maior” que o objeto2 você precisa voltar um número maior que 0 para indicar isso.
Se eles forem “iguais” você retorna 0.
e se o objeto1 for “menor” que o objeto2 você precisa voltar um número menor que 0.
Se você quer ordenar eles em ordem crescente, e quer que os 0 sejam os últimos, você precisa colocar 1 quando ambos for 0…mas ainda sim não sei se vai dar certo…
Coloquei dois “ifs” porque o zero pode vir em uma comparação tanto como primeiro parâmetro como no segundo.
Se eu deixar apenas o primeiro “if”, o metodo não comparará corretamente, por exemplo, os números -1 e 0,
Mas esse algoritmo que o alpharagga quer não orderna realmente.
É uma solução que atende apenas o problema dele.
Quando ambos os objetos a serem ordenados forem zero, não faz diferença.
Valeu ai a todos, principalmente Richard e lavh, era erro de lógica, não por eu estar fazendo a lógica errada e sim porque eu estava pontuando incorretamente. conforme vcs me mostraram e entendi agora, nesse caso de crescente, ele vai lá para o final no caso o maior, que no caso retorna geralmente 1, entao, se eu quero que o zero vá lá pro final, eu retorno 1 quando o objeto comparado em questão for 0, digo, o atributo dele. obrigado a todos mesmo, já estava querendo usar a marreta. usar uma lista auxiliar para separar os valores zero, mas não foi preciso, obviamente.