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

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

Mary-Kate Olsen
Libérer: 2024-12-09 13:44:11
original
538 Les gens l'ont consulté

How to Safely Remove Elements from a Collection During Iteration in Java?

Suppression d'éléments d'une collection pendant une itération

Lors de la suppression d'éléments d'une collection lors d'une itération, il est crucial d'envisager des moyens d'éviter une ConcurrentModificationException. Une approche consiste à parcourir une copie de la collection, en garantissant qu'aucune modification ne se produit pendant l'itération. Une autre approche consiste à utiliser un itérateur de la collection réelle, permettant des opérations de suppression directe.

Collecte et suppression

Dans l'approche de collecte et de suppression, nous trouvons tous les éléments à être supprimés et stockés dans une liste séparée. Après itération, nous supprimons ces éléments de la collection originale. Cette technique est indépendante de la collection et fonctionne avec tout type de collection.

Utilisation de ListIterator

Lorsque vous travaillez avec des listes, un ListIterator fournit une option plus efficace car il prend en charge les éléments suppression et ajout au cours de l’itération. Cette approche modifie directement la collection réelle lors de l'itération.

Améliorations du JDK 8

Dans Java 8 et les versions ultérieures, la méthode "removeIf" et l'API streams offrent des options supplémentaires pour suppression d'éléments. "removeIf" nous permet de supprimer les éléments correspondant à un prédicat, tandis que les flux nous permettent de filtrer les éléments et de les stocker dans une nouvelle collection, que nous pouvons ensuite utiliser pour remplacer l'original.

Sous-liste ou sous-ensemble

Pour les listes triées, l'utilisation de sous-listes ou de sous-ensembles peut supprimer efficacement des éléments consécutifs. En effaçant la sous-liste ou le sous-ensemble, nous modifions indirectement la liste d'origine.

Considérations

La meilleure approche dépend du scénario spécifique :

  • Collecter et supprimer est polyvalent et fonctionne avec tout type de collection.
  • ListIterator est efficace et prend en charge à la fois la suppression et ajout.
  • L'itérateur est moins sûr en raison du potentiel d'implémentations d'itérateurs qui ne prennent pas en charge la suppression.
  • Les améliorations du JDK 8 offrent efficacité et flexibilité, mais nécessitent des versions Java spécifiques.
  • Les sous-listes ou sous-ensembles offrent un moyen efficace de supprimer des éléments consécutifs des listes triées.

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