Pergunta

Se eu tiver 3 objetos a , b e c e quiser verificar se nenhum deles é igual um ao outro, Preciso verificar:

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

De acordo com os documentos Java, para um método equals implementado corretamente:

É transitivo: para quaisquer valores de referência não nulos x, y e z, se x.equals (y) retornar verdadeiro e y.equals (z) retornar verdadeiro, então x.equals (z)deve retornar verdadeiro.

Isso afirma que a igualdade é transitiva, mas e a desigualdade ?

Foi útil?

Solução

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

a!= b -> verdadeiro

b!= c -> verdadeiro

a!= c -> falso

então não, a desigualdade não é transitiva.

Outras dicas

Não é transitivo.Considere x=1, y=2 e z=1.

A desigualdade nunca é transitiva (se você tiver 2 elementos que não são iguais, a e b).Porque então você tem! A.equals (b) e, por causa da simetria! B.equals (a), mas por causa da identidade você tem a.equals (a).Portanto, a desigualdade não pode ser transitiva.

Não, claro que não.

2 != 3
3 != 2

mas

2 == 2

Bem, não.Para transitividade, você precisa da condição verdadeira para qualquer x, y, z;mas se eu escolher z== x, espero muito que

x != y

e y!= z

então NÃO implica

x != z

já que z é x!

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top