对于 HashMap,我应该为键或值覆盖 hashCode 吗?

For HashMap, should I override hashCode for key or value?

HashMap 是否使用键或值的 hashCodeequals 方法来存储其条目,即 class 的 hashCodeequals 我们需要覆盖的方法?应该是键的class(K),还是值的class(V)?

该值本质上与 Map 本身无关:它只是 HashMap 在决定​​将 key/value 对放入其内部数据结构中的位置时考虑的唯一键。

但是,您可能也想覆盖它的值,例如如果你需要做 map.values().contains(...).

您的密钥 class 需要对 hashCode 和 equals 进行适当的覆盖。

key的哈希码决定了一个对象应该放在哪个哈希桶中。

key 的 equals 方法允许您区分碰巧散列到同一个桶的键。