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

Comment supprimer en toute sécurité des éléments d'une ArrayList pendant l'itération ?

Linda Hamilton
Libérer: 2024-12-17 08:25:25
original
431 Les gens l'ont consulté

How to Safely Remove Elements from an ArrayList During Iteration?

Éviter les exceptions de modification simultanées lors de la suppression d'éléments de ArrayList pendant l'itération

Modifier une collection tout en l'itérant à l'aide de la boucle for avancée (for- chaque boucle) peut conduire à la fameuse ConcurrentModificationException. Cela se produit lorsqu'une tentative est faite pour supprimer un élément d'une ArrayList pendant une itération.

Cause :

La boucle for crée une copie de la liste en interne et parcourt cette copie. Lorsqu'un élément est supprimé de la liste d'origine, la taille de la copie est immédiatement réduite, ce qui entraîne l'invalidation de l'index de l'élément actuel.

Solution :

Pour éviter ce problème, utilisez un itérateur avec la méthode Remove().

Itérateur Approche :

Un itérateur est un objet qui parcourt les éléments d'une collection. Il a des méthodes comme hasNext, qui vérifie s'il y a plus d'éléments, et next, qui renvoie l'élément suivant. L'utilisation d'un itérateur permet une suppression en toute sécurité pendant l'itération.

Iterator<String> iter = myArrayList.iterator();

while (iter.hasNext()) {
    String str = iter.next();

    if (someCondition)
        iter.remove();
}
Copier après la connexion

Dans cette approche, l'itérateur conserve son état interne, garantissant que l'index reste valide même après la suppression d'un élément. La méthode iter.remove() supprime en toute sécurité l'élément actuel de la liste d'origine.

Remarque : Cette approche est plus efficace que l'utilisation d'une boucle for traditionnelle avec un index car elle ne nécessite pas conserver une variable d'index distincte et la mettre à jour après chaque suppression.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal