ConcurrentModificationException beim Ändern einer Arraylist während der Iteration
Die gemeldete Ausnahme ist eine Übereinstimmung mit einer Übereinstimmung mit der Übereinstimmung mit der Übereinstimmung mit dem Versuch, ein Arraylist zu ändern. Schleifen -Iteration über Melemente unter Verwendung eines Iterators, um nach bestimmten Bedingungen zu überprüfen:
für (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
alternativer Ansatz:
Ein anderer Ansatz ist die Verwendung eines erweiterten For-Each-Schleifens, das über eine Kopie der Liste übernommen wird, die gleichzeitige Verhinderung der gleichzeitigen Verhinderung:
ListthingsToBeAdd = 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 );
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3