Question

Si j'ai 3 objets , b et c , et je veux vérifier qu'aucun d'entre eux sont égaux entre eux , je dois vérifier:

if (!a.equals(b) && !b.equals(c) && !a.equals(c)) { // to simplify, assume non-null
    // do something
}

Selon les docs Java, pour une méthode equals correctement mis en œuvre:

Il est transitive: pour toutes les valeurs de référence non nul x, y, et z, si x.equals (y) renvoie vrai et y.equals (z) renvoie vrai, alors x.equals (z) devrait revenir vrai.

Cette demande indique que l'égalité est transitif, mais qu'en l'inégalité ?

Était-ce utile?

La solution

donnée a = 5; b = 6; c = 5:

a = b -> true

b = c -> true

a = c -> false

donc pas, l'inégalité est pas transitive.

Autres conseils

Il est pas transitive. Tenez compte x=1, y=2 et z=1.

L'inégalité est jamais transitive (si vous avez 2 éléments qui ne sont pas égaux, a et b). Parce que vous avez! A.Equals (b) et, en raison de la symétrie! B.equals (a), mais à cause de identitiy vous avez a.Equals (a). Alors unequality ne peut pas être transitive.

Non, bien sûr que non.

2 != 3
3 != 2

2 == 2

Eh bien, non. Pour transitivité dont vous avez besoin pour la condition véritable tout x, y, z; mais si je prends z == x, je serais espère sincèrement que

x != y

y! = z

ne signifie donc pas

x != z

depuis z est x

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top