Domanda

Se ho 3 oggetti a , b e c e desidero verificare che nessuno di essi sia uguale tra loro, Devo controllare:

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

Secondo i documenti Java, per un metodo uguale implementato correttamente:

È transitivo: per qualsiasi valore di riferimento non nullo x, yez, se x.equals (y) restituisce true e y.equals (z) restituisce true, allora x.equals (z)dovrebbe restituire true.

Questo afferma che l'uguaglianza è transitiva, ma per quanto riguarda la disuguaglianza ?

È stato utile?

Soluzione

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

a!= b -> vero

b!= c -> vero

a!= c -> false

quindi no, la disuguaglianza non è transitiva.

Altri suggerimenti

Non è transitivo.Considera x=1, y=2 e z=1.

La disuguaglianza non è mai transitiva (se hai 2 elementi che non sono uguali, aeb).Perché allora hai! A.equals (b) e, a causa della simmetria! B.equals (a), ma a causa dell'identità hai a.equals (a).Quindi la disuguaglianza non può essere transitiva.

No, of course not.

2 != 3
3 != 2

but

2 == 2

Well, no. For transitivity you need the condition true for any x, y, z; but if I pick z == x, I would very much hope that

x != y

and y != z

does NOT then imply

x != z

since z is x!

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top