如何将对象用作哈希图中的键。如果您使用一个对象作为键,您是否需要覆盖该对象的 equals 和 hashcode 方法?
原文由 Mahesh Kshirsagar 发布,翻译遵循 CC BY-SA 4.0 许可协议
如何将对象用作哈希图中的键。如果您使用一个对象作为键,您是否需要覆盖该对象的 equals 和 hashcode 方法?
原文由 Mahesh Kshirsagar 发布,翻译遵循 CC BY-SA 4.0 许可协议
15 回答8.4k 阅读
8 回答6.2k 阅读
1 回答4k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答3.1k 阅读
2 回答3.8k 阅读
3 回答1.7k 阅读✓ 已解决
一个简单的经验法则是使用 不可变对象作为
HashMap
中的键。因为:
如果它是可变的,那么
hashcode()
值或equals()
条件可能会改变,你将永远无法从你的HashMap
更准确地说,用于计算
equals()
和hashcode()
的类字段应该是不可变的!现在,假设您创建自己的类:
equals()
hashcode()
(再次牢记不变性)请记住,如果两个对象是
equal()
,那么它们的hashcode()
也应该相等!