class IntegerComparator implements Comparator<Integer>
{
@Override
public int compare(Integer o1, Integer o2) {
if(o1 < o2)
return 1;
else if(o1 > o2)
return -1;
else
return 0;
}
}
Il donne l'ordre décroissant. Je sais cela. Je m'en souviens aveuglément. Je ne comprends pas pourquoi la mise en œuvre doit être comme ça.Implémentation de la méthode compare() dans les comparateurs créés sur mesure
Je m'attends à ce que les résultats soient dans l'ordre croissant. Parce que dans l'ordre croissant, le o1 devrait toujours être inférieur à o2 si vous prenez deux éléments adjacents. Mais il donne l'ordre décroissant auquel je ne m'attends pas.
quelqu'un peut démystifier la logique derrière
Edit:
- Lorsque les éléments sont inversés. Est-ce quand la comparaison renvoie 1?
Notez que la classe 'Integer' a une méthode statique' compare', qui fait exactement ce que vous voulez. Vous pouvez également utiliser la méthode d'instance 'compareTo'. – Berger
Je connais les deux mais quelle logique définit l'ordre ascendant et l'ordre décroissant. –
Btw, si vous voulez juste inverser un comparateur, depuis Java 8, ['Comparator :: reversed'] (https://docs.oracle.com/javase/8/docs/api/java/util/Comparator.html # reversed--) le fera pour vous. –