我应该在HashMap,Java中覆盖String键的equals()和hashCode()

时间:2016-02-12 09:52:25

标签: java hashmap guava equals hashcode

我正在使用HashMap<String, MySuperClass>集合,其中密钥为String格式。通常,要使用HashMap集合,必须覆盖equals()hashCode()

我想澄清一下,我应该覆盖equals()中的hashCode()String以及Integer中的HashMap和其他«原始»类吗?

2 个答案:

答案 0 :(得分:11)

没有。 String s(和Integer s)已经实现equalshashCode,并且您无法为它们覆盖它,因为这些类是final,因此不可扩展。

答案 1 :(得分:4)

当您使用某个类作为HashMap(或HashSetHashtable的关键字)时,您应该确保它覆盖hashCode()和{ {1}}。 JDK&#39; equals(Object),原始包装器(例如StringInteger等)和其他许多已经为您执行此操作,因此您不需要担心它。