-1 java collections
大家都知道,IteratorS按返回ArrayList,HashMap,HashSet等都是快速失败的,但在使用迭代器remove()不会抛出ConcurrentModificationException.怎么样?
ConcurrentModificationException如果在迭代时修改了集合,则抛出fail-fast迭代器.但是从迭代器中删除元素ArrayList或HashSet使用迭代器时remove(),不会抛出任何元素ConcurrentModificationException.请详细解释.
谢谢
但是使用iterator的remove()时不会抛出ConcurrentModificationException.怎么样?
因为该行为是明确记录的.
用于ArrayList:
如果在创建迭代器之后的任何时候对列表进行结构修改,除了通过迭代器自己
remove或add方法之外,迭代器将抛出一个ConcurrentModificationException.
用于HashSet:
如果在创建迭代器之后的任何时候修改了set,除了通过迭代器自己的
remove方法之外,迭代器抛出一个ConcurrentModificationException.
相反,如果你问的是如何实现,那么源代码(至少对于OpenJDK)是免费提供的(并且可能直接从你的IDE中探讨):)