Warum entfernt iterator.forEachRemaining das Element im Consumer-Lambda nicht?
Sehen wir uns dieses Beispiel an:
public class ListIteratorTest {
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("element1");
list.add("element2");
list.add("element3");
list.add("element4");
ListIterator<String> iterator = list.listIterator();
}
}
Und jetzt funktioniert das gut:
// prints elements out, and then appropriately removes one after another
while (iterator.hasNext()){
System.out.println(iterator.next());
iterator.remove();
}
während dies eine IllegalStateException auslöst:
// throws IllegalStateException, why?
iterator.forEachRemaining(n -> {
System.out.println(n);
, iterator.remove();
});
Meine Frage ist kurz: warum?