为什么首选使用不可变对象作为 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
在元素检索时产生的值与添加元素时产生的值不同?我们能否正确定位元素?号
HashSet
与 HashMap
.
没有区别
这一切都是关于拥有能够正确比较对象的 hashCode
和 equals
方法,不变性使得推断这些方法的正确性变得更容易。
我读了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
在元素检索时产生的值与添加元素时产生的值不同?我们能否正确定位元素?号
HashSet
与 HashMap
.
这一切都是关于拥有能够正确比较对象的 hashCode
和 equals
方法,不变性使得推断这些方法的正确性变得更容易。