Junior — Middle
Cum se poate parcurge în siguranță o colecție și în același timp să o modifici?
sobes.tech AI
Răspuns de la AI
В Java при обходе коллекции и одновременной её модификации важно избегать ConcurrentModificationException. Для этого есть несколько подходов:
- Использовать итератор и его метод
remove()для удаления элементов во время обхода:
Iterator<String> iterator = list.iterator();
while (iterator.hasNext()) {
String item = iterator.next();
if (условие) {
iterator.remove(); // безопасное удаление
}
}
-
Использовать коллекции из пакета
java.util.concurrent, напримерCopyOnWriteArrayList, которая позволяет безопасно модифицировать коллекцию во время обхода, но с некоторыми ограничениями по производительности. -
Собрать элементы для удаления или добавления в отдельный список, а после обхода применить изменения.
Таким образом, безопасно модифицировать коллекцию во время обхода можно через итератор или специальные потокобезопасные коллекции.