¿Por qué iterator.forEachRemaining no elimina el elemento en la lambda del consumidor?
Veamos este ejemplo:
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();
}
}
Y ahora, esto funciona bien:
// prints elements out, and then appropriately removes one after another
while (iterator.hasNext()){
System.out.println(iterator.next());
iterator.remove();
}
mientras esto arroja una IllegalStateException:
// throws IllegalStateException, why?
iterator.forEachRemaining(n -> {
System.out.println(n);
, iterator.remove();
});
Mi pregunta es corta: ¿por qué?