gpt4 book ai didi

java - 关于 Java HashSet/HashMap 自定义对象作为键的权威文档?

转载 作者:行者123 更新时间:2023-11-29 05:48:21 32 4
gpt4 key购买 nike

我正试图找到有关如何使用自定义对象作为 HashMap 的键或作为存储在 HashSet 中的对象的权威文档。

通过阅读各种帖子,我不知何故发现您应该覆盖自定义对象(例如 Overriding equals and hashCode in Java)中的两个方法 equals() 和 hashCode()。

但是,当我阅读 HashSet 的 Oracle/Sun 官方 Javadocs 时和 HashMap ,他们根本没有提到重写这些方法。这些说明是否隐藏在文档的其他地方?如果是这样,我在哪里可以找到它们?

最佳答案

不需要覆盖equalshashCode,但您确实需要一致 equalshashCode 方法。

也就是说,如果obj.equals(obj2),那么一定是obj.hashCode() == obj2.hashCode()。相反的(非 equals() 对象具有不相等的 hashCode() 值)应该尽可能经常为真以获得良好的性能,但这不是必需的并且可以'如果您的对象具有超过 2^32 个状态,则不会总是令人满意)。

默认的 equals()hashCode() 方法遵循这一点并具有身份语义 - 对象只有在它们实际上是相同的对象时才相等(obj == obj2 ).

如果你想要值语义——例如,两个具有相同状态的对象是相等的,你应该覆盖那些方法。

关于java - 关于 Java HashSet/HashMap 自定义对象作为键的权威文档?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14969884/

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