Frage

Wenn ich 3 Objekte a , b und c habe und überprüfen möchte, ob keines davon gleich istIch muss überprüfen:

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

Gemäß den Java-Dokumenten gilt für eine korrekt implementierte Gleichheitsmethode:

Es ist transitiv: Wenn für alle Nicht-Null-Referenzwerte x, y und z x.equals (y) true und y.equals (z) true zurückgibt, wird x.equals (z) zurückgegeben.sollte true zurückgeben.

Dies besagt, dass Gleichheit transitiv ist, aber was ist mit Ungleichheit ?

War es hilfreich?

Lösung

gegebener a = 5; b = 6; c = 5:

a!= b -> true

b!= c -> true

a!= c -> false

Also nein, Ungleichung ist nicht transitiv.

Andere Tipps

Es ist nicht transitiv.Betrachten Sie x=1, y=2 und z=1.

Ungleichung ist niemals transitiv (wenn Sie zwei ungleiche Elemente haben, a und b).Denn dann haben Sie! A.Gleiche (b) und wegen der Symmetrie! B.Gleiche (a), aber wegen der Identität haben Sie a.equale (a).Ungleichheit kann also nicht transitiv sein.

Nein, natürlich nicht.

2 != 3
3 != 2

aber

2 == 2

Nun, nein.Für die Transitivität benötigen Sie die Bedingung true für any x, y, z;aber wenn ich z== x wähle, würde ich sehr hoffen, dass

x != y

und y!= z

bedeutet dann NICHT

x != z

da z x ist!

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top