迭代器的 remove 方法如何实际移除对象
我们都知道,在迭代对象时从集合中删除对象的最安全的“并且可能唯一安全”的方法是首先检索 ,执行循环并在需要时删除;Iterator
Iterator iter=Collection.iterator();
while(iter.hasNext()){
Object o=iter.next()
if(o.equals(what i'm looking for)){
iter.remove();
}
}
我想了解的,不幸的是还没有找到一个深入的技术解释,是如何执行此删除,
如果:
for(Object o:myCollection().getObjects()){
if(o.equals(what i'm looking for)){
myCollection.remove(o);
}
}
会抛出一个,“用技术术语”做什么?它是否删除对象,中断循环并重新启动循环?ConcurrentModificationException
Iterator.remove()
我在官方文档中看到:
“删除当前元素。如果尝试调用之前未调用 next( )。”
IllegalStateException
remove()
“删除当前元素”的部分,让我想起了在“常规”循环中发生的完全相同的情况=>(执行相等测试并在需要时删除),但是为什么迭代器循环 ConcurrentModification 是安全的?