考虑这个理论场景:
我有一个 Person
类。我不会对此对象执行任何查找
操作。
我将在Arrays
、List
中使用它们,但不会在Sets
和Maps
中使用它们。
但我想检查两个person对象
列表是否相等
。
例如:
List<Person> list1 = new ArrayList<>();
List<Person> list2 = new ArrayList<>();
如果我想检查这些列表是否相等
,
System.out.println(list1.equals(list2))
我必须在我的 Person
类中实现 equals
方法。我还需要实现Hashcode()
吗?
我不会将我的 Person
对象散列
到存储桶中(仅为此我需要 Hashcode()
)
所以我认为可能没有必要
最佳答案
如果您要覆盖 equals
,最佳实践是实现 hashCode
。即使您现在可能不使用它们作为 key ,但将来可能会使用它们。如果您将此类提供给其他人使用,那么您无法知道他们将如何使用它。
我建议您覆盖它,并在您覆盖一个覆盖另一个时养成习惯。从长远来看,它会对您有所帮助。
关于java - 如果我不在 java 中的对象中使用哈希表或哈希集,我是否需要实现 hashcode(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21392523/