如果我不在java中使用我的对象的hashtables或hashset,我是否需要实现hashcode()?

时间:2014-01-27 21:54:48

标签: java hash hashtable equals hashcode

考虑这个理论情景:

我有一个Person课程。我不会对此对象进行任何look-up操作。 我会在ArraysList但不是SetsMaps中使用它们。 但我想检查两个person Object列表是否equal

例如:

List<Person> list1 = new ArrayList<>();
List<Person> list2 = new ArrayList<>();

如果我想检查这些列表是否为equalSystem.out.println(list1.equals(list2))

我必须在equals课程中实施Person方法。我还需要实施Hashcode()吗? 我不是hashing我的Person个对象进入存储桶(仅限于此,我需要Hashcode()) 所以我认为可能没有必要

1 个答案:

答案 0 :(得分:3)

如果您要覆盖hashCode,最佳实践是equals。即使您现在可能没有将它们用作键,也可能在将来使用它们。如果您将此课程提供给其他人使用,那么您无法知道他们将如何使用它。

我建议你覆盖它,并在你覆盖一个覆盖另一个时养成习惯。从长远来看,它会帮助你。