Pregunta

Si tengo 3 objetos a, b, y C, y quiero comprobar que ninguno de ellos sea igual entre sí, necesito comprobar:

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

Según los documentos de Java, para un método igual correctamente implementado:

Es transitivo:para cualquier valor de referencia no nulo x, y y z, si x.equals(y) devuelve verdadero y y.equals(z) devuelve verdadero, entonces x.equals(z) debería devolver verdadero.

Esto establece que la igualdad es transitiva, pero ¿qué pasa con la desigualdad??

¿Fue útil?

Solución

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

a != b -> verdadero

b != c -> verdadero

a != c -> falso

entonces no, la desigualdad no es transitiva.

Otros consejos

No es transitivo.Considere x=1, y=2 y z=1.

La desigualdad nunca es transitiva (si tiene 2 elementos que no son iguales, ayb).Porque entonces tienes! A.equals (b) y, debido a la simetría! B.equals (a), pero debido a la identidad tienes a.equals (a).Por tanto, la desigualdad no puede ser transitiva.

No, por supuesto que no.

2 != 3
3 != 2

pero

2 == 2

Bueno, no.Para la transitividad, necesita la condición verdadera para cualquier x, y, z;pero si elijo z== x, espero que

x != y

y y!= z

NO implica entonces

x != z

¡ya que z es x!

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top