comprountModificationException при изменении ArrayList во время итерации
, сообщаемое исключение - это coundrentModificationException, происходящее из попытки изменить ArrayList, Melments, в то время как итерация по нему. Цикл итерации по мелкам с использованием итератора для проверки конкретных условий:
] для (iterator
for (Iteratorit = mElements.iterator(); it.hasNext();){ Element element = it.next(); // Check element's position and other conditions... if(element.cFlag){ mElements.add(new Element("crack",getResources(), (int)touchX,(int)touchY)); // ConcurrentModificationException occurs here element.cFlag = false; } }
Решение:
. Итерация:
list
Listальтернативный подход:thingsToBeAdd = new ArrayList (); for(Iterator it = mElements.iterator(); it.hasNext();) { Element element = it.next(); // Check element's position and other conditions... if(element.cFlag){ // Store the new element in a separate list for later addition thingsToBeAdd.add(new Element("crack",getResources(), (int)touchX,(int)touchY)); element.cFlag = false; } } // Add all elements from the temporary list to the main list mElements.addAll(thingsToBeAdd );
другой подход-это использование улучшенного в целом цикле, который итерат над копией списка, предотвращающий concurrentModificationExcept // Проверьте положение элемента и другие условия ... if (element.cflag) { melments.add (новый элемент ("crack", getresources (), (int) touckx, (int) toblety)); // Нет coundrentModificationException element.cflag = false; } }
]Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3