use*_*988 5 java iterator linked-list
可能重复:
在迭代Collection时删除元素的高效等效项
private LinkedList flights;
Run Code Online (Sandbox Code Playgroud)
....
public void clear(){
ListIterator itr = flights.listIterator();
while(itr.hasNext()){
flights.remove(itr.next());
}
}
Run Code Online (Sandbox Code Playgroud)
....
Exception in thread "main" java.util.ConcurrentModificationException
at java.util.LinkedList$ListItr.checkForComodification(Unknown Source)
at java.util.LinkedList$ListItr.next(Unknown Source)
at section1.FlightQueue.clear(FlightQueue.java:44)
at section1.FlightTest001.main(FlightTest001.java:22)
Run Code Online (Sandbox Code Playgroud)
它出什么问题了?不能理解为什么会给出错误,我确信我在arraylists或数组上使用了相同的代码并且它已经有效了.
Rei*_*eus 13
在遍历元素时,您无法直接从集合中删除项目,因为这将导致a ConcurrentModificationException.Iterator.remove()是在迭代期间修改集合的可接受的安全方法.为避免看到IllegalStateException,请务必致电Iterator.next():
while (itr.hasNext()) {
itr.next();
itr.remove();
}
Run Code Online (Sandbox Code Playgroud)
或者您只想删除其中的所有元素Collection,您可以使用:
flights.clear();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
19674 次 |
| 最近记录: |