LinkedList iterator remove
25,055
You cannot remove an item from the collection directly while iterating through the elements as this will cause a ConcurrentModificationException
. Iterator.remove()
is the accepted safe way to modify a collection during iteration. To avoid seeing an IllegalStateException
, make sure to call Iterator.next()
:
while (itr.hasNext()) {
itr.next();
itr.remove();
}
or as you simply wish to remove all elements in the Collection
, you could use:
flights.clear();
See: Efficient equivalent for removing elements while iterating the Collection
Author by
user1817988
Updated on November 13, 2020Comments
-
user1817988 over 3 years
Possible Duplicate:
Efficient equivalent for removing elements while iterating the Collectionprivate LinkedList flights;
....
public void clear(){ ListIterator itr = flights.listIterator(); while(itr.hasNext()){ flights.remove(itr.next()); } }
....
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)
Whats wrong with it? cant at all understand why the error is given, I am sure i have used the same code on arraylists or arrays and it has worked.