Java 中的不等式具有传递性吗?

发布于 2024-12-03 03:25:22 字数 480 浏览 4 评论 0原文

如果我有 3 个对象 abc,并且我想检查它们是否彼此相等,我需要检查:

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。

这表明平等是可传递的,但是不平等又如何呢?

If I have 3 objects a, b, and c, and I want to check that none of them are equal to each other, I need to check:

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

According to the Java docs, for a correctly implemented equals method:

It is transitive: for any non-null reference values x, y, and z, if x.equals(y) returns true and y.equals(z) returns true, then x.equals(z) should return true.

This states that equality is transitive, but what about inequality?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

嗳卜坏 2024-12-10 03:25:22

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

It's not transitive. Consider x=1, y=2 and z=1.

つ可否回来 2024-12-10 03:25:22

给定 a = 5; b = 6; c = 5:

a != b ->真

b != c ->真

a != c ->错误

,所以不,不平等不具有传递性。

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

a != b -> true

b != c -> true

a != c -> false

so no, inequality is not transitive.

記憶穿過時間隧道 2024-12-10 03:25:22

不等式永远不会传递(如果有两个不相等的元素,a 和 b)。因为这样你就得到了 !a.equals(b),并且由于对称性而得到了 !b.equals(a),但是由于同一性你得到了 a.equals(a)。所以不平等不能是传递性的。

Inequality is never transitive (if you have 2 elements that are not equal, a and b). Because then you have !a.equals(b) and, because of symmetry !b.equals(a), but because of identitiy you have a.equals(a). So unequality cannot be transitive.

陌路黄昏 2024-12-10 03:25:22

不,当然不是。

2 != 3
3 != 2

2 == 2

No, of course not.

2 != 3
3 != 2

but

2 == 2
哥,最终变帅啦 2024-12-10 03:25:22

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

x != y

并且
y != z

并不表示,

x != z

因为 z x!

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!

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文