Retour au cours

Parcourir les collections à l'aide des Iterators et de la boucle for améliorée

Maîtrise de Java : De Zéro à Développeur Professionnel (Un parcours en 50 leçons)

Leçon 41 : Parcourir les collections à l'aide des Iterators

Il existe plusieurs façons de boucler sur les collections, chacune ayant des capacités différentes.

1. La boucle for améliorée (For-Each)

C'est le moyen le plus simple de parcourir n'importe quelle collection (List, Set ou clés/valeurs de Map) qui implémente l'interface Iterable. Elle est en lecture seule et fortement recommandée pour sa simplicité.

java List planets = List.of("Mars", "Terre", "Jupiter");

for (String planet : planets) { System.out.println(planet); }

2. L'interface Iterator

Toutes les classes de Collection fournissent une méthode iterator() qui retourne un objet Iterator. C'est le seul moyen de supprimer en toute sécurité des éléments d'une collection tout en la parcourant.

Méthodes clés de l'Iterator

  • hasNext() : Retourne true s'il reste des éléments.
  • next() : Retourne l'élément suivant et fait avancer l'itérateur.
  • remove() : Supprime l'élément qui a été retourné en dernier par next().

java import java.util.Iterator;

List numbers = new ArrayList<>(Arrays.asList(1, 2, 3, 4, 5)); Iterator it = numbers.iterator();

while (it.hasNext()) { Integer num = it.next(); if (num % 2 == 0) { it.remove(); // Suppression sûre } }

System.out.println(numbers); // Sortie : [1, 3, 5]

Problème de concurrence (Fail-Fast) : Si vous essayez de modifier une collection (ajouter/supprimer) à l'intérieur d'une boucle for standard ou d'une boucle for améliorée, Java lèvera une ConcurrentModificationException. La méthode Iterator.remove() est le moyen sûr de modifier une collection pendant l'itération.