Короче, смотрите, все знают, что нельзя удалять из списка элементы в for-each цикле 👎
А если не знают, то теперь знают.👍
Если внутри что-то удалить из списка (или добавить) будет атата: ⚠️
ConcurrentModificationExceptionКогда мы итерируемся по коллекции через for-each , Компилятор преобразует for-each в использование
Iterator, как если бы код выглядел так:Iterator<String> iterator = list.iterator();
while (iterator.hasNext()) {
String item = iterator.next();
System.out.println(item);
}
И даже если мы возьмем итератор:
Iterator<String> iterator = list.iterator();
Добавим что-то в список:
list.add("B");
Пробежимся итератором по списку:
while (iterator.hasNext()) {
String item = iterator.next();
System.out.println(item);
}
На первой же итерации в методе
next() получим ту же бяку: ⚠️ConcurrentModificationException 💩❓❓❓
Вопрос: как итератор понимает, что список модифицировали?