如何将对象用作 HashMap 中的键。如果您使用一个对象作为键,您是否需要覆盖该对象的 equals 和 hashcode 方法?
最佳答案
一个简单的经验法则是在 HashMap
中使用不可变对象(immutable对象)作为键。
因为:
如果它是可变的,那么 hashcode()
值或 equals()
条件可能会改变,您将永远无法从您的 HashMap
.
更准确地说,用于计算equals()
和hashcode()
的类字段应该是不可变的!
现在,假设您创建自己的类:
- 要比较类中的两个对象,您必须覆盖
equals()
- 要将它用作任何基于哈希的数据结构中的键,您必须重写
hashcode()
(同样,请牢记不变性)
请记住,如果两个对象 equal()
,那么它们的 hashcode()
也应该相等!
关于java - 我们可以在 Java 中使用对象作为 hashmap 中的键吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45831828/