为什么我的哈希图不起作用?我的对象具有以下属性:hashCode()相等意味着equals(...)相等

rag*_*rdl -2 java hashtable hashmap hashset

为什么我的Java HashMap不起作用?我的对象具有.equals平等意味着hashCode平等的属性。

您可以假定将对象添加到中之后,正在修改对象的字段HashMap

And*_*eas 5

您可以假定在将对象添加到HashMap之后正在修改对象的字段。

那就是为什么。

Javadoc说

注意:如果将可变对象用作地图键,则必须格外小心。如果在对象是映射中的键的情况下以影响等值比较的方式更改对象的值,不会指定映射的行为。

“未指定”表示“可能不起作用”,因此当它不起作用时,您应该不会感到惊讶。