Вызов collection.remove()
во время итерации с помощью инстантицированного итератора может привести к возникновению ConcurrentModificationException
.
Это происходит потому, что итератор обычно не знает об изменениях, внесенных в базовую коллекцию напрямую извне итератора. Итератор поддерживает внутреннее состояние (например, индекс текущего элемента), которое становится невалидным, если коллекция изменяется не через методы самого итератора (iterator.remove()
).
Некоторые реализации коллекций могут быть "fail-fast" (быстро падающие) и специально бросать ConcurrentModificationException
при обнаружении таких изменений, чтобы избежать непредсказуемого поведения.
Единственный безопасный способ модифицировать коллекцию во время итерации — это использо
Вызов collection.remove()
во время итерации с помощью инстантицированного итератора может привести к возникновению ConcurrentModificationException
.
Это происходит потому, что итератор обычно не знает об изменениях, внесенных в базовую коллекцию напрямую извне итератора. Итератор поддерживает внутреннее состояние (например, индекс текущего элемента), которое становится невалидным, если коллекция изменяется не через методы самого итератора (iterator.remove()
).
Некоторые реализации коллекций могут быть "fail-fast" (быстро падающие) и специально бросать ConcurrentModificationException
при обнаружении таких изменений, чтобы избежать непредсказуемого поведения.
Единственный безопасный способ модифицировать коллекцию во время итерации — это использо
Register or sign in to get access to full answers for all questions from the question bank.