[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"question-collections-kak-povedyot-sebya-kollektsiya-esli-vyzvat-iterator-remove":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},437,"kak-povedyot-sebya-kollektsiya-esli-vyzvat-iterator-remove",12,"collections","Collections","📚","Как поведёт себя коллекция, если вызвать iterator.remove()","Метод `iterator.remove()` удаляет из коллекции последний элемент, возвращенный вызовом `next()`. Если `remove()` вызван до первого `next()` или повторно без промежуточного `next()`, будет выброшено `IllegalStateException`.\n\nУдаление через итератор — это единственный безопасный способ модифицировать коллекцию во время итерации. В отличие от прямого вызова `collection.remove()`, итераторный remove() корректно обновляет внутренний счетчик модификаций (expectedModCount), поэтому не вызывает `ConcurrentModificationException`.\n\nНа практике это выглядит так:\n\n```java\nIterator\u003CString> it = list.iterator();\nwhile (it.hasNext()) {\n    String s = it.next();\n    if (s.isEmpty()) {\n        it.remove(); \u002F\u002F безопасное удаление\n    }\n}\n```\n\n> **На собеседовании:** подчеркните, что remove() работает только после next(), иначе — IllegalStateException. Это единственный способ удалять элементы во время итерации без ConcurrentModificationException.","","junior",[15,16],"основы","jcf",[],null,{"title":20,"description":21,"ogTitle":22,"ogDescription":23,"keywords":24,"schemaAnswer":31,"featuredSnippetReady":32},"iterator.remove() — безопасное удаление при итерации — Gymterview","iterator.remove() удаляет последний элемент, возвращённый next(). Без предварительного next() — IllegalStateException. Единственный безопасный способ удаления при итерации.","Поведение iterator.remove() — Gymterview","remove() удаляет элемент из next(). Без next() — IllegalStateException. Безопасное удаление при итерации.",[25,26,27,28,29,30],"Iterator","remove()","IllegalStateException","ConcurrentModificationException","Java","собеседование","iterator.remove() удаляет из коллекции последний элемент, возвращённый next(). Если remove() вызван до next() или повторно без промежуточного next() — IllegalStateException. Это единственный безопасный способ удаления при итерации.",true]