Java next()已耗尽元素时的并发修改
我最近一直在读这本书。假设我们想要为给定的容器类构建一个故障快速迭代器。在某个时间点,执行了以下代码:Java next()已耗尽元素时的并发修改,java,iterator,concurrentmodification,nosuchelementexception,Java,Iterator,Concurrentmodification,Nosuchelementexception,我最近一直在读这本书。假设我们想要为给定的容器类构建一个故障快速迭代器。在某个时间点,执行了以下代码: Iterator<Object> it = myContainer.iterator(); while(it.hasNext()) System.out.println(it.next()); 如果现在调用it.next,并且基于官方文档,我们应该抛出ConcurrentModificationException或NosTouchElementException的实例吗?
Iterator<Object> it = myContainer.iterator();
while(it.hasNext())
System.out.println(it.next());
如果现在调用it.next,并且基于官方文档,我们应该抛出ConcurrentModificationException或NosTouchElementException的实例吗?也许更重要的是,这是否可以从官方文档中推断出来?您应该抛出ConcurrentModificationException。NoSuchElementException表示迭代器中没有更多元素。当您遇到并发修改时,它总是会推翻NosTouchElementException。至少ArrayListLinkedList是如何做到这一点的。请解释清楚,不清楚。我试图找出想要为给定容器实现故障快速迭代器类的人应该抛出两个异常中的哪一个,比如堆栈、列表、优先级队列。。。
myContainer.remove(2); // Assume at least 3 elements contained