Maison >Java >javaDidacticiel >Comment éviter ConcurrentModificationException lors de la suppression d'éléments d'une collection au cours d'une itération ?
Éviter l'exception ConcurrentModificationException lors de la suppression d'éléments de collection pendant l'itération
Introduction
Modifier une collection simultanément le parcourir peut entraîner un comportement inattendu, notamment une ConcurrentModificationException. Pour éviter ce problème, différentes approches peuvent être utilisées.
Approche 1 : Itérer sur une copie de collection
Une méthode consiste à créer une copie de la collection et à parcourir cette copie au lieu de la collection originale. Cela garantit que la collection d'origine n'est pas modifiée pendant l'itération.
Exemple :
List<Foo> fooListCopy = new ArrayList<>(fooList); for (Foo foo : fooListCopy) { // Modify the actual fooList }
Approche 2 : Utilisation de l'itérateur de collection
Une autre approche consiste à utiliser l'itérateur fourni par la collection d'origine. L'itérateur fournit un moyen sûr de parcourir la collection et de supprimer des éléments lors de l'itération.
Exemple :
Iterator<Foo> itr = fooList.iterator(); while (itr.hasNext()) { // Modify the actual fooList using itr.remove() }
Approches alternatives avec JDK 8 ou supérieur
Considération pour Sélection
La meilleure approche dépend du scénario spécifique :
Considérations supplémentaires :
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!