gpt4 book ai didi

java - SCJP HashCode() 和 Equals() 混淆

转载 作者:太空宇宙 更新时间:2023-11-04 06:35:03 24 4
gpt4 key购买 nike

在 SCJP 书中有一张表

enter image description here

我在最后一排感到困惑。如果x.hashCode()! = y.hasCode()比为什么 ut “必需x.equals(y) == false 更重要。

因为根据我的理解,如果 HashCode 不同,就会有不同的存储桶,并且从中查找对象不会产生问题,而不是为什么需要 "x.equals(y) == false"?

让我们假设 x.hashCode()! = y.hashCode() 。和x.equals(y) == true.

当我从“或到 map 或集”检索或添加对象时,这有什么区别吗?

任何例子都会受到赞赏。

最佳答案

当您为自己的类实现自定义 hashCodeequals 方法时,这是您需要遵守的约定,以便在 Java 中实现哈希和对象相等性测试。他们在书中提到了这一点,因为在您自己的实现中,您自己的自定义 hashCodeequals 方法中可能会违反这些约定

您所说的条件是 x.equals(y) == true 的直接结果意味着 x.hashCode() == y.hashCode() (表格中的第一行)

(P 暗示 Q) 与 (not Q 暗示 not P) 是一样的,P 是该教科书表格中第一行的 x.equals(y) == true,Q 是 x.hashCode() == y.hashCode()

关于java - SCJP HashCode() 和 Equals() 混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25525146/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com