Quelle est la différence entre return 0, return 1 et return -1 in compareTo () en Java? ..
À partir des documents de référence de Comparable.compareTo (T) :
Compare cet object avec l’object spécifié pour la commande. Renvoie un entier négatif, zéro ou un entier positif car cet object est inférieur, égal ou supérieur à l’object spécifié.
Le réalisateur doit assurer sgn (x.compareTo (y)) == -sgn (y.compareTo (x)) pour tous les x et y. (Cela implique que x.compareTo (y) doit lancer une exception ssi y.compareTo (x) lance une exception)
L’implémenteur doit également s’assurer que la relation est transitive: (x.compareTo (y)> 0 && y.compareTo (z)> 0) implique x.compareTo (z)> 0.
Enfin, l’implémenteur doit s’assurer que x.compareTo (y) == 0 implique que sgn (x.compareTo (z)) == sgn (y.compareTo (z)), pour tout z.
Il est fortement recommandé, mais pas ssortingctement requirejs que (x.compareTo (y) == 0) == (x.equals (y)). En règle générale, toute classe qui implémente l’interface Comparable et viole cette condition doit clairement l’indiquer. Le langage recommandé est “Note: cette classe a un ordre naturel incompatible avec les égaux.”
Dans la description qui précède, la notation sgn (expression) désigne la fonction de signum mathématique, qui est définie pour renvoyer l’une de -1, 0 ou 1 selon que la valeur de l’expression est négative, nulle ou positive.
En bref:
this.compareTo(that)
résultats
où l’implémentation de cette méthode détermine la sémantique réelle de <
>
et ==
(je ne veux pas dire ==
dans le sens de l'opérateur d'identité d'object de java)
"abc".compareTo("def")
produira quelque chose de plus petit que 0 car abc
est alphabétiquement avant def
.
Integer.valueOf(2).compareTo(Integer.valueOf(1))
produira quelque chose de plus grand que 0 parce que 2 est plus grand que 1.
Note: Il est recommandé pour une classe qui implémente Comparable de déclarer la sémantique de sa méthode compareTo () dans les javadocs.
Remarque: vous devez lire au moins l'un des éléments suivants:
Attention: vous ne devez jamais compter sur les valeurs de retour de compareTo qui sont -1
, 0
et 1
. Vous devez toujours tester x < 0
, x == 0
, x > 0
, respectivement.
J’utilise cette mnémonique:
a.compareTo(b) < 0 // a < b a.compareTo(b) > 0 // a > b a.compareTo(b) == 0 // a == b
Vous conservez les signes et comparez toujours le résultat de compareTo()
à 0
Réponse en bref: (recherchez votre situation)
Prenons l’exemple si nous voulons comparer “a” et “b”, c’est-à-dire (“a” == this)
Il peut être utilisé pour le sorting et 0 signifie “égal” tandis que -1 signifie “moins” et “plus (plus)”.
Toute valeur de retour inférieure à 0 signifie que l’opérande gauche est inférieur et que si la valeur est supérieure à 0, l’opérande gauche est plus grand.
int x = thisObject.compareTo(anotherObject);
La méthode compareTo()
renvoie un int avec les caractéristiques suivantes:
If thisObject < anotherObject
If thisObject == anotherObject
If thisObject > anotherObject