我正在使用HashMap<String, MySuperClass>
集合,其中密钥为String
格式。通常,要使用HashMap
集合,必须覆盖equals()
和hashCode()
。
我想澄清一下,我应该覆盖equals()
中的hashCode()
和String
以及Integer
中的HashMap
和其他«原始»类吗?
答案 0 :(得分:11)
没有。 String
s(和Integer
s)已经实现equals
和hashCode
,并且您无法为它们覆盖它,因为这些类是final
,因此不可扩展。
答案 1 :(得分:4)
当您使用某个类作为HashMap
(或HashSet
或Hashtable
的关键字)时,您应该确保它覆盖hashCode()
和{ {1}}。 JDK&#39; equals(Object)
,原始包装器(例如String
,Integer
等)和其他许多已经为您执行此操作,因此您不需要担心它。