gpt4 book ai didi

java - hashCode在比较两个对象时起什么作用?

转载 作者:搜寻专家 更新时间:2023-11-01 02:42:48 26 4
gpt4 key购买 nike

我决定研究一些 Java 的初级文档。我从 Object 类开始,我正在查看 equals 方法。我知道 equals 正在使用 hashCode 方法。尽管 hashCode 返回 int,因此可以生成的唯一哈希码数量有限。

当我尝试比较具有相同 hashCode 的两个不同 对象时会发生什么?这甚至可能吗?

最佳答案

是的。两个对象可以具有相同的哈希码。但是,hashcode 在比较两个对象时不起作用。如果你想检查一个类的两个对象是否相等,覆盖equals并定义类的两个对象何时应该被认为是相等的。如果您想比较一个类的一个对象是否小于/大于另一个对象(通常在对集合进行排序时),请实现 Comparable 并覆盖 compareTo 方法。 (你也可以实现Comparator)

如果您想将对象存储在 HashSet 中或将其用作 HashMap 中的键,请确保覆盖 hashCode 方法,否则您的对象/键很可能会存储在不同的存储桶中,从而导致重复。

不要忘记在您创建的类中覆盖 equals。如果您不这样做,则只有当它们引用同一对象时,对您类的对象的两个引用才相等。

您可以在 equals 中阅读更多关于 equals 和 hashCode 方法的信息和 hashCode文档。

关于java - hashCode在比较两个对象时起什么作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29949305/

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