我应该为 HashMap Java 中的字符串键重写 equals() 和 hashCode() 吗?

Should I override equals() and hashCode() for String key in HashMap, Java?

我正在使用 HashMap<String, MySuperClass> 集合,其中密钥采用 String 格式。一般来说,为了使用 HashMap 集合,有必要覆盖 equals()hashCode().

我想澄清一下,我是否应该为 StringInteger 和 [= 中的其他“原始”类 覆盖 equals()hashCode() 13=]?

没有。 Strings(和 Integers)已经实现了 equalshashCode,你无法为它们覆盖它,因为那些 类 是 final,因此不可扩展。

当您使用 class 作为 HashMap(或 HashSetHashtable 的键时,您应该确保它覆盖 hashCode()equals(Object)。 JDK 的 String、原始包装器(例如 IntegerLong 等)和许多其他包装器已经为您完成了此操作,因此您不需要担心它。