该javadoc的解释它
注意:如果将可变对象用作地图键,则必须格外小心。如果在对象是映射中的键的情况下以影响等值比较的方式更改对象的值,则不会指定映射的行为。
基本上,不要在地图中使用可变对象作为键,否则会被烧死
推断一下,因为文档可能看起来不清楚,所以我认为这里的相关要点“以影响equals的方式发生了变化”,并且您似乎假设每次调用contains时都会调用equals(Object)。文档并没有说,措辞暗示他们可能被允许缓存计算。
查看源代码,似乎是因为您的hashCode返回了一个不同的值(以前是5,现在是6),所以有可能根据实现细节在另一个存储桶中查找它。



