不支持任何修改操作(例如
add
、remove
和clear
)的集合称为unmodifiable。...还保证了 Collection 对象中的任何更改都不会被看到的集合称为immutable。
第二个标准让我有点困惑。假设第一个集合是unmodifiable的,并且假设原始集合引用已被丢弃,那么第二行所指的更改是什么?它是指集合中包含的元素的更改,也就是元素的状态吗?
第二个问题:
要使集合成为immutable,该如何提供指定的附加保证?如果集合中的元素状态由线程更新,那么将这些更改在持有immutable集合的线程上不可见是否足以实现不可变性?
要使集合成为immutable,该如何提供指定的附加保证?
newCol = oldCol.add("element")
将生成一个新集合,它是旧集合的副本,有1个以上的元素,并且所有对oldCol
的引用仍将指向相同的未更改的旧集合。 - ffriend