我应该在Java的HashMap中重写字符串键的equals()和hashCode()?
我使用的是我应该在Java的HashMap中重写字符串键的equals()和hashCode()?,java,hashmap,guava,equals,hashcode,Java,Hashmap,Guava,Equals,Hashcode,我使用的是HashMapcollection,其中的键是String格式。通常,为了使用HashMap集合,需要重写equals()和hashCode() 我想澄清一下,我是否应该覆盖HashMap中的equals()和hashCode()、Integer和其他«primitive»类的equals()和Integer。Strings(和Integers)已经实现了equals和hashCode,您无法为它们重写它,因为这些类是final,因此不可扩展 当您使用类作为HashMap(或HashS
HashMap
collection,其中的键是String
格式。通常,为了使用HashMap
集合,需要重写equals()
和hashCode()
我想澄清一下,我是否应该覆盖
HashMap
中的equals()
和hashCode()
、Integer
和其他«primitive»类的equals()
和Integer
。String
s(和Integer
s)已经实现了equals和hashCode
,您无法为它们重写它,因为这些类是final
,因此不可扩展 当您使用类作为HashMap
(或HashSet
,或Hashtable
)的键时,应确保它覆盖hashCode()
和等于(对象)
。JDK的字符串
、基本包装器(如整数
、长
等)和许多其他工具已经为您完成了这项工作,因此您不必担心它。嗯String
和Integer
是内置类,它们已经具有equals
和hashCode
。是的,这就是问题的原因。在一些地方,我读到在String
和Integer
的情况下,这是不必要的,但在其他地方,人们也为这些类实现了equals()
和hashCode()
。所以,我想澄清一下这一点。“在其他地方,人们为这些类实现equals()
和hashCode()
“Where?@AndyTurner,@MikeB。该代码覆盖映射的equals方法,而不是String的equals方法。。。