我们可以在迭代时在ArrayList中执行删除操作,然后为什么不能在迭代时执行相同的操作CopyOnWriteArrayList?

为什么在此过程中发生UnsupportedOperationException?

最佳答案

所有CopyOnWriteArrayList的变体(添加,删除等...)都只是在创建新数组,而iterator()只是在创建带有数组快照的Iterator以排除干扰的可能性,这些文档:


  “快照”样式的迭代器方法使用对状态的引用
  创建迭代器时的数组。这个数组永远不会
  在迭代器的生命周期内发生变化,因此干扰为
  不可能,并且保证迭代器不会抛出
  ConcurrentModificationException。

08-04 03:41
查看更多