考虑这个理论情景:
我有一个Person
课程。我不会对此对象进行任何look-up
操作。
我会在Arrays
,List
但不是Sets
和Maps
中使用它们。
但我想检查两个person Object
列表是否equal
。
例如:
List<Person> list1 = new ArrayList<>();
List<Person> list2 = new ArrayList<>();
如果我想检查这些列表是否为equal
,
System.out.println(list1.equals(list2))
我必须在equals
课程中实施Person
方法。我还需要实施Hashcode()
吗?
我不是hashing
我的Person
个对象进入存储桶(仅限于此,我需要Hashcode()
)
所以我认为可能没有必要
答案 0 :(得分:3)
如果您要覆盖hashCode
,最佳实践是equals
。即使您现在可能没有将它们用作键,也可能在将来使用它们。如果您将此课程提供给其他人使用,那么您无法知道他们将如何使用它。
我建议你覆盖它,并在你覆盖一个覆盖另一个时养成习惯。从长远来看,它会帮助你。