我应该为 HashMap Java 中的字符串键重写 equals() 和 hashCode() 吗?
Should I override equals() and hashCode() for String key in HashMap, Java?
我正在使用 HashMap<String, MySuperClass>
集合,其中密钥采用 String
格式。一般来说,为了使用 HashMap
集合,有必要覆盖 equals()
和 hashCode()
.
我想澄清一下,我是否应该为 String
、Integer
和 [= 中的其他“原始”类 覆盖 equals()
和 hashCode()
13=]?
没有。 String
s(和 Integer
s)已经实现了 equals
和 hashCode
,你无法为它们覆盖它,因为那些 类 是 final
,因此不可扩展。
当您使用 class 作为 HashMap
(或 HashSet
或 Hashtable
的键时,您应该确保它覆盖 hashCode()
和 equals(Object)
。 JDK 的 String
、原始包装器(例如 Integer
、Long
等)和许多其他包装器已经为您完成了此操作,因此您不需要担心它。
我正在使用 HashMap<String, MySuperClass>
集合,其中密钥采用 String
格式。一般来说,为了使用 HashMap
集合,有必要覆盖 equals()
和 hashCode()
.
我想澄清一下,我是否应该为 String
、Integer
和 [= 中的其他“原始”类 覆盖 equals()
和 hashCode()
13=]?
没有。 String
s(和 Integer
s)已经实现了 equals
和 hashCode
,你无法为它们覆盖它,因为那些 类 是 final
,因此不可扩展。
当您使用 class 作为 HashMap
(或 HashSet
或 Hashtable
的键时,您应该确保它覆盖 hashCode()
和 equals(Object)
。 JDK 的 String
、原始包装器(例如 Integer
、Long
等)和许多其他包装器已经为您完成了此操作,因此您不需要担心它。