gpt4 book ai didi

Java 的 equals 和 hashmap 问题

转载 作者:行者123 更新时间:2023-12-01 19:23:53 26 4
gpt4 key购买 nike

所以我正在学习Java,我试图理解equals,但我真的不明白它。所以我的问题是: equals 是如何工作的?谢谢

最佳答案

equals 是一种用于发现两个给定对象是否相同的方法。对象的 equals 的默认实现是:如果它们具有完全相同的引用,则它们是相同的

有时,您不希望这样。假设您有一个 ComplexNumber 类,以及两个值为 1+i 的实例。您不希望仅仅因为它们是不同的实例而使它们不相等。本质上,它们代表相同的数字。在这种情况下,您应该覆盖 equals 以确保其按预期运行。

HashMap 使用来自 equals 的信息来了解您传递的键是否已经存在。

摘自《Effective Java》一书:

Always override hashcode when you override equals

我还要补充一点:特别是如果您使用 Hashmap =)

Hashmaps 还使用 hashcode() 来更快地搜索键,并且 hashcode() 的结果必须与 equals 结果一致。换句话说,如果x.equals(y),则x.hashcode() == y.hashcode()(或者您的 HashMap 可能有未定义的行为) 。你可能有 x 和 y 与 x.hashcode() == y.hashcode()!x.equals(y)

如果您想要更具体的答案,请提出更具体的问题 =)。

关于Java 的 equals 和 hashmap 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2504237/

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