Maison  >  Article  >  Java  >  Pouvez-vous modifier une collection tout en la parcourant ?

Pouvez-vous modifier une collection tout en la parcourant ?

Linda Hamilton
Linda Hamiltonoriginal
2024-11-04 10:49:30717parcourir

Can You Modify a Collection While Iterating Through It?

Modification itérative d'une collection : est-ce possible ?

Lors d'une itération dans une collection, il peut être souhaitable d'y ajouter de nouveaux éléments. Cependant, le didacticiel Java indique que l'utilisation d'itérateurs est la seule approche sûre pour toute modification de collection au cours de l'itération.

Limitations de la modification basée sur les itérateurs

La raison de cette restriction réside dans la conception des itérateurs. Ils conservent une référence à l'élément actuel et à sa position dans la collection. Si la collection est modifiée autrement que par les méthodes de l'itérateur (par exemple, en accédant directement à sa structure et en la modifiant), l'intégrité de l'itérateur peut être compromise, entraînant un comportement inattendu.

Approche alternative : file d'attente- Itération basée

Pour surmonter cette limitation lors de l'ajout d'éléments lors de l'itération, envisagez plutôt d'utiliser une file d'attente. Une file d'attente est une structure de données FIFO (premier entré, premier sorti) qui maintient un ordre linéaire des éléments. Cette approche offre une solution simple :

  1. Remplissez la file d'attente avec les éléments sur lesquels vous souhaitez parcourir initialement.
  2. Bien que la file d'attente ne soit pas vide :
    a. Retirez l'élément suivant de la file d'attente et traitez-le.
    b. Si l'élément traité satisfait à la condition spécifiée, placez tous les éléments supplémentaires à l'arrière de la file d'attente.

En suivant cette approche, vous pouvez ajouter des éléments à la collection tout en vous assurant que l'itérateur (la file d'attente dans ce cas) reste valable et l'itération se poursuit de manière transparente.

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