Java中的不等式是否可传递?

时间:2011-09-07 11:41:33

标签: java equals inequality transitivity

如果我有3个对象 a b c ,我想检查它们中没有一个是彼此相等的,我需要检查一下:

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

根据Java文档,对于正确实现的equals方法:

  

它是传递性的:对于任何非空引用值x,y和z,如果x.equals(y)返回true而y.equals(z)返回true,则x.equals(z)应该返回true。

这表明平等是可传递的,但不平等呢

5 个答案:

答案 0 :(得分:6)

这不是传递性的。考虑x=1y=2z=1

答案 1 :(得分:3)

不等式永远不会传递(如果你有两个不相等的元素,a和b)。因为那时你有!a.equals(b)和,因为对称性!b.equals(a),但是因为同一性你有a.equals(a)。所以不平等不可传递。

答案 2 :(得分:3)

给出a = 5; b = 6; c = 5

a!= b - >真

b!= c - >真

a!= c - >假

所以不,不平等不是传递性的。

答案 3 :(得分:1)

不,当然不是。

2 != 3
3 != 2

2 == 2

答案 4 :(得分:1)

嗯,不。对于传递性,您需要任何 x,y,z的条件为true;但如果我选择z == x,我非常希望

x != y

和     y!= z

然后

不暗示

x != z

因为z x!