Sobes.tech
Back to questions
Junior — Middle
60

Каким образом можно безопасно пройтись по коллекции и одновременно ее модифицировать?

Answer from AI

sobes.tech AI

В Java при обходе коллекции и одновременной её модификации важно избегать ConcurrentModificationException. Для этого есть несколько подходов:

  1. Использовать итератор и его метод remove() для удаления элементов во время обхода:
Iterator<String> iterator = list.iterator();
while (iterator.hasNext()) {
    String item = iterator.next();
    if (условие) {
        iterator.remove(); // безопасное удаление
    }
}
  1. Использовать коллекции из пакета java.util.concurrent, например CopyOnWriteArrayList, которая позволяет безопасно модифицировать коллекцию во время обхода, но с некоторыми ограничениями по производительности.

  2. Собрать элементы для удаления или добавления в отдельный список, а после обхода применить изменения.

Таким образом, безопасно модифицировать коллекцию во время обхода можно через итератор или специальные потокобезопасные коллекции.