Не могу понять в чем проблема. java.util.ConcurrentModificationException

235
30 июня 2018, 16:10

Вот мой код:

import java.util.ArrayList;'
import java.util.Iterator;'
import java.util.List;'
public class Test {
    public static void main(String[] args) {
        List<Integer> ourList = new ArrayList<>();
        Iterator<Integer> iterator = ourList.iterator();
        for (int i = 0; i < 5; i++) {
            ourList.add(i + 1);
        }
        while (iterator.hasNext()) {
            System.out.println(iterator.next());
        }
    }
}

Выдает следующую ошибку при запуске:

Exception in thread "main" java.util.ConcurrentModificationException
    at java.base/java.util.ArrayList$Itr.checkForComodification(ArrayList.java:937)
    at java.base/java.util.ArrayList$Itr.next(ArrayList.java:891)
    at Test.main(Test.java:16)
Answer 1

ошибка говорит о том что вы модифицировали коллекцию параллельно с использованием итератора: в данном конкретном случае вы добавили элементы после создания итератора.

если перенести создание итератора после цикла с добавлением элементов то ошибки не будет.

Answer 2

В итераторе есть встроенная проверка на то, что коллекция не изменяется во время итерации.

Вы сперва создали итератор, он запомнил, что в коллекция пустая. Потом вы добавили в коллекцию элементы. Затем вы пытаетесь использовать итератор, но он обнаруживает, что коллекция изменилась, и выбрасывает исключение.

Вам нужно получать итератор неподсредственно перед использованием:

Iterator<Integer> iterator = ourList.iterator();
while (iterator.hasNext()) {
    System.out.println(iterator.next());
}
READ ALSO
Отсортировать List&lt;String&gt; с помощью Stream API

Отсортировать List<String> с помощью Stream API

Есть List и с помощью Stream API нужно отсортировать этот лист:

229
Чтение файлов внутри зависимого jar

Чтение файлов внутри зависимого jar

Имеется jar-файл, в котором в папке с ресурсами лежит набор файлов, в одном из классов пытаюсь вычитать определенный файл:

285
В index.jsp не работает &lt;fmt:message&gt;

В index.jsp не работает <fmt:message>

Столкнулся с проблемой: при интернационализации с помощью Spring в indexjsp не работает тег

301
split и пустые строки

split и пустые строки

Такое делоКогда делаю так,

349