的
remove(int)上方法
List删除指定位置的元素。在开始循环之前,您的列表如下所示:
[1, 2]
然后,在列表上启动迭代器:
[1, 2] ^
您的
for环然后删除 位置1处的元件 ,这是数字2:
[1] ^
在下一个隐式
hasNext()调用上,迭代器返回
false,然后循环终止。
ConcurrentModificationException如果将更多元素添加到列表中,则会得到一个。然后隐式
next()将抛出。
请注意,从Javadoc
ArrayList到JCF:
注意,迭代器的快速失败行为无法得到保证,因为通常来说,在存在不同步的并发修改的情况下,不可能做出任何严格的保证。快速失败的迭代器会
ConcurrentModificationException尽力而为。因此,编写依赖于此异常的程序以确保其正确性是错误的:
迭代器的快速失败行为应仅用于检测错误 。
这实际上可能是Oracle
ArrayList迭代器实现中的一个错误。
hasNext()并 没有 检查修改:
public boolean hasNext() { return cursor != size;}

![它不会引发异常ConcurrentModificationException [重复] 它不会引发异常ConcurrentModificationException [重复]](http://www.mshxw.com/aiimages/31/469674.png)
