[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"question-collections-napishite-odnopotochnuyu-programmu-kotoraya-zastavlyaet-kollektsiyu-vybrosit-concurrentmodificationexception":3},{"id":4,"slug":5,"topicId":6,"topicSlug":7,"topicName":8,"topicEmoji":9,"question":10,"answer":11,"codeLang":12,"codeSrc":12,"important":12,"commonMistakes":12,"modernUsage":12,"difficulty":13,"tags":14,"related":17,"progress":18,"seo":19},501,"napishite-odnopotochnuyu-programmu-kotoraya-zastavlyaet-kollektsiyu-vybrosit-concurrentmodificationexception",12,"collections","Collections","📚","Напишите однопоточную программу, которая заставляет коллекцию выбросить ConcurrentModificationException","`ConcurrentModificationException` возникает при модификации коллекции во время итерации по ней через for-each или Iterator.\n\n```java\nList\u003CInteger> list = new ArrayList\u003C>(List.of(1, 2, 3));\nfor (Integer num : list) {\n    list.remove(num); \u002F\u002F ConcurrentModificationException\n}\n```\n\nПричина: for-each использует Iterator, который при каждом вызове `next()` проверяет modCount коллекции. Вызов `list.remove()` изменяет modCount напрямую, не обновляя expectedModCount итератора, что вызывает исключение.\n\nПравильный способ удаления во время итерации:\n```java\nIterator\u003CInteger> it = list.iterator();\nwhile (it.hasNext()) {\n    it.next();\n    it.remove(); \u002F\u002F корректно\n}\n\u002F\u002F Или: list.removeIf(num -> true); \u002F\u002F Java 8+\n```\n\n> **На собеседовании:** покажите простой пример с for-each и remove(). Объясните причину через modCount и предложите правильное решение через iterator.remove() или removeIf().","","junior",[15,16],"основы","jcf",[],null,{"title":20,"description":21,"ogTitle":22,"ogDescription":23,"keywords":24,"schemaAnswer":33,"featuredSnippetReady":34},"ConcurrentModificationException в однопоточном коде — Gymterview","for-each + list.remove() вызывает CME: for-each использует Iterator, list.remove() изменяет modCount. Правильно: iterator.remove() или removeIf().","CME в однопоточной программе — Gymterview","for-each + list.remove() → ConcurrentModificationException. Решение: iterator.remove() или removeIf().",[25,26,27,28,29,30,31,32],"ConcurrentModificationException","for-each","list.remove()","iterator.remove()","removeIf","modCount","Java","собеседование","for (Integer n : list) { list.remove(n); } — for-each использует Iterator, list.remove() изменяет modCount напрямую → CME. Правильно: iterator.remove() или list.removeIf(predicate).",true]