考虑此理论场景:
我有一个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))
我将必须在我的Person
类中实现equals
方法。我仍然需要实现Hashcode()
吗?我不是hashing
我的Person
对象成桶(仅为此我需要Hashcode()
)因此,我认为可能不是必需的
如果您覆盖equals
,则实现hashCode
是一种最佳实践。即使您现在可能不将它们用作钥匙,您将来也可能会使用它们。如果您将此课给其他人使用,那么您将不知道他们将如何使用它。
我建议您覆盖它,并在您覆盖一个以替代另一个时养成它的习惯。从长远来看,它将为您提供帮助。