Por que iterator.forEachRemaining não remove o elemento no lambda Consumer?
Vamos dar uma olhada neste exemplo:
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();
}
}
E agora, isso funciona bem:
// prints elements out, and then appropriately removes one after another
while (iterator.hasNext()){
System.out.println(iterator.next());
iterator.remove();
}
enquanto isso lança uma IllegalStateException:
// throws IllegalStateException, why?
iterator.forEachRemaining(n -> {
System.out.println(n);
, iterator.remove();
});
Minha pergunta é curta: por quê?