Was ist der Unterschied zwischen der Rückkehr 0
, Rückkehr 1
und Rückkehr -1
in compareTo()
in Java?
java
comparable
Magggi
quelle
quelle
a-b
wenna
es größer ist, ist das Ergebnis positiv (+1). Wennb
es größer ist , ist das Ergebnis negativ ... wenn sie es sind gleich sein0
Antworten:
Offizielle Definition
Aus den Referenzdokumenten von Comparable.compareTo (T) :
Meine Version
Zusamenfassend:
this.compareTo(that)
kehrt zurück
wo die Implementierung dieser Methode die tatsächliche Semantik von
<
>
und bestimmt==
(ich meine nicht==
im Sinne des Objektidentitätsoperators von Java)Beispiele
"abc".compareTo("def")
ergibt etwas kleiner als 0, wie
abc
es alphabetisch vorher istdef
.Integer.valueOf(2).compareTo(Integer.valueOf(1))
ergibt etwas größer als 0, da 2 größer als 1 ist.
Einige zusätzliche Punkte
Hinweis: Für eine Klasse, die Comparable implementiert, empfiehlt es sich, die Semantik ihrer compareTo () -Methode in den Javadocs zu deklarieren.
Hinweis: Sie sollten mindestens eines der folgenden Dokumente lesen:
Achtung: Sie nie auf den Rückgabewert von compareTo Wesen verlassen sollen
-1
,0
und1
. Sie sollten immer testenx < 0
,x == 0
,x > 0
, respectively.quelle
sgn()
, nicht direkt -1 und 1. Sie sollten dies zu Ihrer Kurzversion hinzufügen.Ich benutze diese Mnemonik:
a.compareTo(b) < 0 // a < b a.compareTo(b) > 0 // a > b a.compareTo(b) == 0 // a == b
Sie behalten die Zeichen und vergleichen das Ergebnis immer
compareTo()
mit 0quelle
a.compareTo(b) = a - b
.a-b
sollte niemals in einer Implementierung von compareTo () in echtem Code verwendet werden, da es überlaufen kann (und wird).Antworte kurz: (suche deine Situation)
quelle
Nehmen Sie ein Beispiel, wenn wir "a" und "b" vergleichen möchten, dh ("a" == this)
quelle
Es kann zum Sortieren verwendet werden, und 0 bedeutet "gleich", während -1, und 1 bedeutet "weniger" und "mehr (größer)".
Jeder Rückgabewert, der kleiner als 0 ist, bedeutet, dass der linke Operand kleiner ist. Wenn der Wert größer als 0 ist, ist der linke Operand größer.
quelle
strcmp()
bei C.int x = thisObject.compareTo(anotherObject);
Die
compareTo()
Methode gibt ein int mit den folgenden Merkmalen zurück:If thisObject < anotherObject
If thisObject == anotherObject
If thisObject > anotherObject
quelle
System.out.println (A.compareTo (B)> 0? "Ja": "Nein")
Wenn der Wert von A> B ist, wird "Ja" oder "Nein" zurückgegeben.
quelle