hashCode()可以动态更改内容吗?

Jes*_*ssu 3 java

在我的实现中,我有一个类A,它覆盖equals(Object)和hashCode().但我有一个小小的疑问,即在向HashSet/HashMap添加A的实例时,hashCode()的值为x,之后相同的hashCode()的值更改为y.它会影响什么吗?

Jon*_*eet 7

将哈希码添加到地图/集后,不得更改哈希码.它可以在此之前进行更改,但它通常会使类型更容易使用,如果它不会更改.

如果哈希码发生变化,则不会在map/set中找到密钥,因为即使它最终位于同一个存储桶中,也会首先更改哈希码.