如果HashSet返回的迭代器,ArrayList是快速失败的,我们如何使用iterator remove()从Collection中删除元素

-1 java collections

大家都知道,IteratorS按返回ArrayList,HashMap,HashSet等都是快速失败的,但在使用迭代器remove()不会抛出ConcurrentModificationException.怎么样?

ConcurrentModificationException如果在迭代时修改了集合,则抛出fail-fast迭代器.但是从迭代器中删除元素ArrayListHashSet使用迭代器时remove(),不会抛出任何元素ConcurrentModificationException.请详细解释.

谢谢

Oli*_*rth 6

但是使用iterator的remove()时不会抛出ConcurrentModificationException.怎么样?

因为该行为是明确记录的.

用于ArrayList:

如果在创建迭代器之后的任何时候对列表进行结构修改,除了通过迭代器自己removeadd方法之外,迭代器将抛出一个ConcurrentModificationException.

用于HashSet:

如果在创建迭代器之后的任何时候修改了set,​​除了通过迭代器自己的remove方法之外,迭代器抛出一个ConcurrentModificationException.

相反,如果你问的是如何实现,那么源代码(至少对于OpenJDK)是免费提供的(并且可能直接从你的IDE中探讨):)