Eine rudimentäre kleine Geschichte über Javas compareTo
.
Ich möchte Leute, die sagen: "Das Ergebnis von" compareTo "ist, dass Sie nicht sofort wissen, welches ist."
compareTo
vergleicht immer mit 0
Das Ergebnis von Comparable # compareTo
sollte immer mit 0
verglichen werden.
Möglicherweise wird ein Code angezeigt, der mit "-1" oder "1" verglichen wird, was falsch ist.
Das Folgende wird aus [Standard API JavaDoc] zitiert (https://docs.oracle.com/javase/jp/9/docs/api/java/lang/Comparable.html#compareTo-T-) (ich betone es) tat)
Rückgabewert: ** Negative Ganzzahl ** wenn dieses Objekt kleiner als das angegebene Objekt ist, ** Null ** wenn gleich, ** Positive Ganzzahl ** wenn größer
Wie oben erwähnt, gibt es keine Garantie dafür, dass feste Werte wie "-1" und "1" zurückgegeben werden. (Obwohl es oft implementiert wird, um "-1" oder "1" zurückzugeben)
Sie können gehorsam lesen und schreiben, indem Sie "compareTo" auf der linken Seite des Vergleichsoperators [^ 1] aufrufen und "0" auf der rechten Seite schreiben.
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");
}
Wenn Sie einen gründlichen Vergleich mit "0" durchführen, werden Sie durch das Ergebnis von "compareTo" nicht verwirrt.
[^ 1]: ==
, <
usw.
Recommended Posts