next() 元素耗尽时的并发修改

Concurrent modification when next() has exhausted elements

最近一直在阅读 Iterators。假设我们要为给定容器 class 构建一个 fail-fast 迭代器。在某个时间点,执行了以下代码;

Iterator<Object> it = myContainer.iterator();
while(it.hasNext())
    System.out.println(it.next());

然后,我们对 myContainer 进行修改,使用一种名为 remove(int index 的方法):

myContainer.remove(2);      // Assume at least 3 elements contained

如果 it.next() 现在被调用 ,并且根据官方文档,我们应该抛出 ConcurrentModificationException 的实例还是 NoSuchElementException ?也许更重要的是,这是否可以从官方文档中推断出来?

你应该投一个ConcurrentModificationExceptionNoSuchElementException 表示迭代器中没有更多元素。当您遇到并发修改时,它总是否决 NoSuchElementException。至少 ArraylistLinkedList 是如何做到的。