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 :
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!