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



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