ConcurrentModificationException

174
17 сентября 2019, 20:10

Здравствуйте, постоянно получаю ошибку, когда пытаюсь добавить объекты на карту. Гугл мне не дал ясности, стек оверфлоу я тоже, не понял, что пытается донести. Единственное, что понял, одновременно читаю и записываю в этот список.

p.s. прошу прощения за орфографию

private void addGeoObjectsToMap() {
    List<? extends GeoObject> list = getCurrentPageObjectsList();
    if (list != null) {
        for (GeoObject obj : list) {
            addUserMarker(obj);
        }
    }
}
Answer 1

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

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

List<String> strList = new ArrayList<>();
Iterator<String> strIter = strList.iteraror();
while (strIter.hasNext()) {
    String str = strIter.next();
    if (/* condition */) {
        strIter.remove();
    }
}

Вставка элментов в коллекцию во время перебора её элементов стандартными коллекциями не поддерживается.

UPD

дело в том, что мне не нужно одновременно читать и записывать в коллекцию

Будем считать, что не - это опечатка и вам на самом деле нужно это делать. В таких случаях делают копию исходной коллекции. Итерация идёт по исходной коллекции, а вставка и удаление - из копии. После завершения цикла исходную коллекцию заменяют на новую.

READ ALSO
Как сделать inline-кнопку Telegram Bot API с новой строки в Java?

Как сделать inline-кнопку Telegram Bot API с новой строки в Java?

Как сделать inline-кнопку Telegram API с новой строки в Java?

151
Как сделать Json отображение через Simple JSON

Как сделать Json отображение через Simple JSON

Что сделать, чтобы показывал строку в этом коде?

133
Вывод данных на страницу

Вывод данных на страницу

При выводе данных в консоль все отображается без пробела, а вот если на страницу появляется небольшое расстояние и затем если в окне пытаться...

159
Отключить растяжку flex при переносе

Отключить растяжку flex при переносе

При указании значения flex: 150px, элементы в контейнере растягиваются так, чтобы заполнить всю ширину родителяНо нужно, чтобы при переносе этих...

124