Back to questions
Junior — Middle
60
Каким образом можно безопасно пройтись по коллекции и одновременно ее модифицировать?
Answer from AI
sobes.tech AI
В Java при обходе коллекции и одновременной её модификации важно избегать ConcurrentModificationException. Для этого есть несколько подходов:
- Использовать итератор и его метод
remove()для удаления элементов во время обхода:
Iterator<String> iterator = list.iterator();
while (iterator.hasNext()) {
String item = iterator.next();
if (условие) {
iterator.remove(); // безопасное удаление
}
}
-
Использовать коллекции из пакета
java.util.concurrent, напримерCopyOnWriteArrayList, которая позволяет безопасно модифицировать коллекцию во время обхода, но с некоторыми ограничениями по производительности. -
Собрать элементы для удаления или добавления в отдельный список, а после обхода применить изменения.
Таким образом, безопасно модифицировать коллекцию во время обхода можно через итератор или специальные потокобезопасные коллекции.