Une petite histoire rudimentaire sur le «compareTo» de Java. Je veux des gens qui disent: "Le résultat de" compareTo "est que vous ne savez pas lequel est tout de suite."
compareTo
se compare toujours à 0
Le résultat de «Comparable # compareTo» doit toujours être comparé à «0». Vous pouvez voir le code comparé à «-1» ou «1», ce qui est incorrect.
Ce qui suit est extrait de Standard API JavaDoc (italiques ajoutés) fait)
Valeur de retour: ** Entier négatif ** si cet objet est inférieur à l'objet spécifié, ** Zéro ** s'il est égal, ** Entier positif ** s'il est supérieur
Comme mentionné ci-dessus, il n'y a aucune garantie que des valeurs fixes telles que «-1» et «1» seront renvoyées. (Bien qu'il soit souvent implémenté pour renvoyer «-1» ou «1»)
Vous pouvez lire et écrire docilement en appelant «compareTo» sur le côté gauche de l'opérateur de comparaison [^ 1] et en écrivant «0» sur le côté droit.
compareTo
if (obj1.compareTo(obj2) == 0) {
System.out.println("obj1 = obj2");
}
if (obj1.compareTo(obj2) != 0) {
System.out.println("obj1 ≠ obj2");
}
if (obj1.compareTo(obj2) < 0) {
System.out.println("obj1 < obj2");
}
if (obj1.compareTo(obj2) <= 0) {
System.out.println("obj1 ≦ obj2");
}
if (obj1.compareTo(obj2) > 0) {
System.out.println("obj1 > obj2");
}
if (obj1.compareTo(obj2) >= 0) {
System.out.println("obj1 ≧ obj2");
}
Si vous faites une comparaison approfondie avec «0», vous ne serez pas dérouté par le résultat de «compareTo».
[^ 1]: ==
, <
, etc.