private LinkedList flights;
...
public FlightQueue() {
super();
flights = new LinkedList();
}
...
public void clear(){
ListIterator itr = flights.listIterator();
while(itr.hasNext()){
itr.remove();
}
}
...
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)
不知道什么是错的,它在第一个itr.remove()显示错误。
答案 0 :(得分:5)
来自iterator API:
IllegalStateException - 如果是下一个方法 尚未调用,或者已经调用了remove方法 在最后一次调用下一个方法之后
你必须在调用 iterator.remove()之前调用 iterator.next()。
while(itr.hasNext()){
itr.next(); //This would resolve the exception.
itr.remove();
}
答案 1 :(得分:0)
只有在之前调用 next()或 previous()时才能调用 itr.remove(),因为它会删除元素那些方法返回了。
public void clear(){
flights.clear();
}
答案 2 :(得分:0)
使用LinkedList的clear()方法
答案 3 :(得分:0)
查看Javadoc for ListIterator
。它明确指出:
IllegalStateException - neither next nor previous have been called,
or remove or add have been called after the last call to next or previous.
您在发布的代码片段中.next()
之前需要.remove()
。
干杯,