Maison >Java >javaDidacticiel >Comment puis-je ajouter dynamiquement des éléments à une collection pendant une itération en Java ?

Comment puis-je ajouter dynamiquement des éléments à une collection pendant une itération en Java ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-03 17:53:29224parcourir

How Can I Dynamically Add Elements to a Collection During Iteration in Java?

Amélioration des collections itératives avec l'ajout d'éléments dynamiques

L'API Java Iterator standard garantit des modifications de collection sûres pendant l'itération, interdisant les modifications externes de la collection. Cependant, certains scénarios peuvent nécessiter l'ajout d'éléments dynamiques à la collection lors de l'itération.

Restrictions de l'itérateur Java

Le didacticiel Java met explicitement en garde contre la modification des collections pendant l'itération, déclarant que " Iterator.remove est le seul moyen sûr de modifier une collection pendant une itération." Toute autre modification peut entraîner un comportement non spécifié.

Stratégie alternative : mise en file d'attente dynamique

Pour contourner ces restrictions, envisagez de construire une file d'attente (par exemple, java.util.LinkedList) qui contient initialement les éléments à parcourir. Si des éléments spécifiques satisfont une condition pendant l'itération, mettez les éléments supplémentaires en file d'attente à la fin de la file d'attente.

Utilisez la méthode remove() pour traiter progressivement les éléments de la file d'attente, en maintenant l'itération jusqu'à ce que la file d'attente soit vide. Cette approche émule une boucle itérative standard avec la possibilité d'ajouter dynamiquement des éléments.

Exemple de workflow :

  1. Initialiser une file d'attente avec les éléments de la collection d'origine.
  2. Parcourez la file d'attente à l'aide de poll() pour récupérer des éléments.
  3. Pour les éléments remplissant la condition, mettez en file d'attente les éléments requis supplémentaires dans la file d'attente.
  4. Continuez à itérer et à mettre en file d'attente jusqu'à ce que la file d'attente soit terminée. vide.

Cette stratégie garantit que les éléments ajoutés sont également soumis à une itération, contrôlant les boucles infinies potentielles et maintenant un processus itératif conceptuellement propre.

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