Lors d'une itération dans une ArrayList, tenter de supprimer des éléments pendant l'itération peut entraîner une java.util.ConcurrentModificationException . Cela se produit en raison du mécanisme d'échec rapide d'ArrayList, qui détecte toute modification apportée à la structure de la liste pendant l'itération et lève l'exception pour éviter des résultats inattendus.
Pour résoudre ce problème, il existe deux approches principales à considérer :
Cette approche consiste à identifier les éléments à supprimer dans la boucle et à les ajouter à une liste distincte. Une fois l'itération terminée, supprimez tous les éléments de la liste d'origine à l'aide de la méthode removeAll().
ArrayList valuesToRemove = new ArrayList();
for (A a : abc) {
if (a.shouldBeRemoved()) {
valuesToRemove.add(a);
}
}
abc.removeAll(valuesToRemove);
Vous pouvez également utiliser la propre méthode Remove() de l'itérateur. Cependant, notez que cette approche nécessite d'utiliser la boucle for traditionnelle plutôt que la boucle for améliorée.
for (Iterator iterator = abc.iterator(); iterator.hasNext();) {
A a = iterator.next();
if (a.shouldBeRemoved()) {
iterator.remove();
}
}
En implémentant l'une de ces approches, vous pouvez éviter l'exception ConcurrentModificationException tout en modifiant efficacement votre ArrayList pendant l'itération.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3