Core - 2

Как избежать ConcurrentModificationException во время перебора коллекции?


Чтобы избежать `ConcurrentModificationException` во время перебора коллекции, можно использовать итератор и его метод `remove()` для удаления элементов. Вот пример: import java.util.ArrayList; import java.util.Iterator; import java.util.List; public class AvoidConcurrentModificationExceptionExample { public static void main(String[] args) { List<Integer> numbers = new ArrayList<>(); numbers.add(1); numbers.add(2); numbers.add(3); Iterator<Integer> iterator = numbers.iterator(); while (iterator.hasNext()) { Integer number = iterator.next(); if (number == 2) { iterator.remove(); // Удаление элемента с использованием итератора } } System.out.println(numbers); } } В этом примере мы создаем список чисел и получаем итератор для перебора элементов. Затем мы используем цикл `while` и методы `hasNext()` и `next()` итератора для перебора элементов коллекции. Если мы хотим удалить определенный элемент, мы вызываем метод `remove()` , который удаляет текущий элемент, на котором находится итератор. Использование метода `remove()` итератора позволяет удалить элемент из коллекции без возникновения `ConcurrentModificationException` , так как итератор отслеживает изменения структуры коллекции и обновляет свое внутреннее состояние. В результате, после удаления элемента с помощью итератора, мы получим измененную коллекцию без ошибки `ConcurrentModificationException` .


Копировать ссылку