Dlaczego tak
Iterator przechodzi kolejno po elementach kolekcji, a jego metoda remove usuwa element zwrócony ostatnio przez next, bezpiecznie dla dalszego przeglądania. Usunięte zostają więc −1 i −5, a lista ma postać [3, 4]. Wyjątek ConcurrentModificationException wystąpiłby, gdyby w pętli for-each usuwać elementy metodą l.remove — wtedy kolekcja zmienia się bez wiedzy iteratora.