使用迭代器删除时出现链接列表错误

use*_*988 0 java iterator linked-list

可能重复:
LinkedList迭代器删除

private LinkedList flights;

...

public FlightQueue() {
    super();
    flights = new LinkedList();
}

...

public void clear(){

   ListIterator itr = flights.listIterator();

   while(itr.hasNext()){
        itr.remove();
   }
}
Run Code Online (Sandbox Code Playgroud)

....

Exception in thread "main" java.lang.IllegalStateException
    at java.util.LinkedList$ListItr.remove(Unknown Source)
    at section1.FlightQueue.clear(FlightQueue.java:44)
    at section1.FlightTest001.main(FlightTest001.java:22)
Run Code Online (Sandbox Code Playgroud)

不知道什么是错的,它在第一个itr.remove()显示错误.

Per*_*ror 6

来自迭代器API:
IllegalStateException - 如果尚未调用下一个方法,或者在最后一次调用下一个方法后已经调用了remove方法

你必须在调用iterator.remove()之前调用iterator.next().

    while(itr.hasNext()){
        itr.next(); //This would resolve the exception.
        itr.remove();
    }
Run Code Online (Sandbox Code Playgroud)