为什么首选使用不可变对象作为 Set 的元素?

Why is it preferred to use immutable objects as elements of a Set?

我读了here:

Immutable objects are good Map keys and Set elements, since these typically do not change once created.

因为这些集合依赖于散列,所以构成它们 hashCode 的字段应该是不可变的。

当一个 HashMap 想要存储一个键值时,它使用其 key 的 hashCode 并计算出该对的位置,

相同的技术将用于元素检索(例如:contains、get 等)。现在想象 hashCode 在元素检索时产生的值与添加元素时产生的值不同?我们能否正确定位元素?号

HashSetHashMap.

没有区别

这一切都是关于拥有能够正确比较对象的 hashCodeequals 方法,不变性使得推断这些方法的正确性变得更容易。