Lin*_* Ma 0 java linkedhashmap
关于LinkedHashMap的同步功能的一个特定点我很困惑.以下是我感到困惑的相关Javadoc.我的困惑之处在于,为什么删除方法在这里是特殊的,这是由" - 通过迭代器自己的删除方法除外"提到的?
http://docs.oracle.com/javase/6/docs/api/java/util/LinkedHashMap.html
所有此类的集合视图方法返回的集合的迭代器方法返回的迭代器都是快速失败的:如果在创建迭代器之后的任何时候对映射进行结构修改,除非通过迭代器自己的remove方法,迭代器将抛出ConcurrentModificationException.因此,在并发修改的情况下,迭代器快速而干净地失败,而不是在未来的未确定时间冒任意,非确定性行为的风险.
林先生,提前谢谢
基本上,您不允许在迭代时对结构进行结构修改,因为这样做会使迭代器无效.
Iterator.remove() 特别是免除这一点,使您能够轻松编写如下代码:
Iterator<E> it = coll.iterator();
while (it.hasNext()) {
E val = it.next();
if (some_condition) {
it.remove();
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
512 次 |
| 最近记录: |