ConcurrentModificationException Ao modificar um ArrayList durante a iteração
a exceção relatada é um cenário. Existe um loop iterando sobre os meticulosos usando um iterador para verificar se há condições específicas:
para (iterator
for (IteratorSolution:it = 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; } }
To avoid this exception, one option is to create a separate list to store elements that need to be added and append those to the main list after completing the iteração:
list
Listabordagem alternativa: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 );
Outra abordagem é usar um loop for-cada aprimorado, que itera sobre uma cópia da lista, prevenção de concorrentes. // Verifique a posição do elemento e outras condições ... if (element.cflag) { MELLEGREMS.Add (novo elemento ("crack", getResources (), (int) touchx, (int) touchy)); // sem concorrenteModificaçãoException element.cflag = false; } }
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3