Maison >Java >javaDidacticiel >Comment supprimer en toute sécurité des éléments d'une ArrayList lors d'une itération simultanée en Java ?

Comment supprimer en toute sécurité des éléments d'une ArrayList lors d'une itération simultanée en Java ?

Susan Sarandon
Susan Sarandonoriginal
2024-10-29 10:14:03909parcourir

How to Safely Remove Elements from an ArrayList During Concurrent Iteration in Java?

Gestion de ConcurrentModificationException lors d'une itération et d'une suppression simultanées dans ArrayList

En Java, itérer sur une collection tout en la modifiant simultanément peut entraîner un java. util.ConcurrentModificationException. Cette exception se produit lorsque la structure de la collection est modifiée au cours de l'itération en raison d'opérations d'ajout ou de suppression.

Pour contourner ce problème lorsque vous travaillez avec ArrayList, tenez compte des bonnes pratiques suivantes :

  • Créez une liste d'éléments à supprimer :

    Gérez une liste distincte pour suivre les éléments qui doivent être supprimés. Dans la boucle, ajoutez simplement les éléments à cette liste au lieu de les supprimer directement de la liste d'origine. Une fois la boucle terminée, utilisez la méthode removeAll() d'ArrayList pour supprimer tous les éléments de la liste.

  • Utilisez la méthode Remove d'Iterator :

    Employez la méthode Remove() disponible sur l'itérateur lui-même. Notez que cela nécessite l'abandon de la syntaxe de boucle for améliorée de Java 8 pour parcourir la liste.

Par exemple, si vous souhaitez supprimer des chaînes d'une longueur supérieure à cinq d'une ArrayList :

<code class="java">List<String> list = new ArrayList<String>();
...
for (Iterator<String> iterator = list.iterator(); iterator.hasNext(); ) {
    String value = iterator.next();
    if (value.length() > 5) {
        iterator.remove();
    }
}</code>

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn