Одной из распространенных проблем, с которыми сталкиваются разработчики на 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().
Добавить комментарий