[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"question-collections-kak-izbezhat-concurrentmodificationexception-vo-vremya-perebora-kollektsii":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":18,"progress":19,"seo":20},439,"kak-izbezhat-concurrentmodificationexception-vo-vremya-perebora-kollektsii",12,"collections","Collections","📚","Как избежать ConcurrentModificationException во время перебора коллекции","`ConcurrentModificationException` можно избежать несколькими способами, выбор зависит от того, однопоточный или многопоточный контекст.\n\nДля однопоточного кода:\n\n- Использовать `iterator.remove()` вместо `collection.remove()` — итератор корректно синхронизирует счетчик модификаций.\n- Собрать элементы для удаления в отдельную коллекцию и вызвать `removeAll()` после завершения итерации.\n- Использовать `removeIf(Predicate)` (Java 8+), который внутри безопасно удаляет элементы.\n- Преобразовать коллекцию в массив (`toArray()`) и перебирать массив.\n\nДля многопоточного кода:\n\n- Использовать `CopyOnWriteArrayList` или `CopyOnWriteArraySet` — они создают копию при каждой модификации.\n- Использовать `ConcurrentHashMap` вместо HashMap — итераторы с weakly consistent семантикой.\n- Оборачивать итерацию в `synchronized`-блок (но это снижает производительность).\n\n> **На собеседовании:** начните с iterator.remove() и removeIf() — это самые практичные подходы. Затем упомяните concurrent-коллекции для многопоточного контекста.","","middle",[15,16,17],"best-practices","jcf","concurrency",[],null,{"title":21,"description":22,"ogTitle":23,"ogDescription":24,"keywords":25,"schemaAnswer":33,"featuredSnippetReady":34},"Как избежать ConcurrentModificationException — Gymterview","Способы: iterator.remove(), removeIf(), CopyOnWriteArrayList, ConcurrentHashMap, synchronized-блок. Для однопоточного и многопоточного кода.","Как избежать ConcurrentModificationException в Java — Gymterview","iterator.remove(), removeIf(), concurrent-коллекции, synchronized — способы избежать CME.",[26,27,28,29,30,31,32],"ConcurrentModificationException","iterator.remove()","removeIf","CopyOnWriteArrayList","ConcurrentHashMap","Java","собеседование","Однопоточно: iterator.remove(), removeIf() (Java 8+), toArray() + перебор массива. Многопоточно: CopyOnWriteArrayList, ConcurrentHashMap, synchronized-блок на время итерации.",true]