Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我应该在Java的HashMap中重写字符串键的equals()和hashCode()?_Java_Hashmap_Guava_Equals_Hashcode - Fatal编程技术网

我应该在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方法。。。