-1 java collections
大家都知道,Iterator
S按返回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中探讨):)
归档时间: |
|
查看次数: |
85 次 |
最近记录: |