Gymterview
junior

Как поведёт себя уже инстанциированный итератор для collection, если вызвать collection.remove()

При следующем вызове любого метода итератора (next(), hasNext(), remove()) будет выброшено ConcurrentModificationException. Это происходит потому, что прямая модификация коллекции изменяет значение modCount, которое перестает совпадать с expectedModCount итератора.

Это классический пример fail-fast поведения. Итератор обнаруживает, что коллекция была изменена «за его спиной», и немедленно сигнализирует об ошибке. Правильный способ удаления — через сам итератор (iterator.remove()) либо через использование concurrent-коллекций.

На собеседовании: ответ — ConcurrentModificationException. Объясните через механизм modCount vs expectedModCount.