Вебинары Разобраться в IT Реферальная программа
Программирование Аналитика Дизайн Маркетинг Управление проектами
7 профессий по цене одной
07:05:47:06
дн. ч. мин. сек.
17 Июл 2024
1 мин
755

Избегаем ConcurrentModificationException при удалении элементов из ArrayList во время итерации

Одной из распространенных проблем, с которыми сталкиваются разработчики на Java, является ConcurrentModificationException. Это исключение возникает, когда коллекция,

Одной из распространенных проблем, с которыми сталкиваются разработчики на Java, является ConcurrentModificationException. Это исключение возникает, когда коллекция, по которой происходит итерация, изменяется в процессе этой итерации. Проблема становится особенно актуальной, когда нужно удалить элемент из списка во время итерации.

Пример кода, который вызывает это исключение:

ArrayList<String> list = new ArrayList<String>();
list.add("Java");
list.add("PHP");
list.add("Python");

for (String language : list) {
    if (language.equals("PHP")) {
        list.remove(language);
    }
}

В этом примере попытка удалить элемент списка во время итерации через него вызывает ConcurrentModificationException.

Чтобы избежать этого исключения, можно использовать итератор и метод remove(). Итератор предоставляет безопасный способ удаления элементов из коллекции во время итерации.

Пример кода, который безопасно удаляет элемент из списка во время итерации:

ArrayList<String> list = new ArrayList<String>();
list.add("Java");
list.add("PHP");
list.add("Python");

Iterator<String> iterator = list.iterator();
while (iterator.hasNext()) {
    String language = iterator.next();
    if (language.equals("PHP")) {
        iterator.remove();
    }
}

Таким образом, для безопасного удаления элементов из коллекции во время итерации по ней следует использовать итератор и его метод remove().

Проверь как ты усвоил материалы статьи
Пройди тест и узнай насколько ты лучше других читателей

Добавить комментарий