我们可以在迭代时在ArrayList中执行删除操作,然后为什么不能在迭代时执行相同的操作CopyOnWriteArrayList?
为什么在此过程中发生UnsupportedOperationException?
最佳答案
所有CopyOnWriteArrayList
的变体(添加,删除等...)都只是在创建新数组,而iterator()
只是在创建带有数组快照的Iterator
以排除干扰的可能性,这些文档:
“快照”样式的迭代器方法使用对状态的引用
创建迭代器时的数组。这个数组永远不会
在迭代器的生命周期内发生变化,因此干扰为
不可能,并且保证迭代器不会抛出
ConcurrentModificationException。