Introduction aux itérateurs

Entrées/sorties et flux en Java

Alex Liu

Software Development Engineer

Travailler avec des collections

  • Exemple de HashSet pour la suite de la vidéo
import java.util.HashSet;

public class SampleHashSetData { public static void main(String[] args) { HashSet<String> fruits = new HashSet<>();
fruits.add("Apple"); fruits.add("Banana");
} }
{Apple, Banana}
Entrées/sorties et flux en Java

Utiliser la boucle For-Each

  • Boucle for-each
    • Format : for (type x: collection){}
    • Traite automatiquement chaque élément
    • Fonctionne avec plusieurs collections : List, Set, Map et plus
  • Exemple : utiliser l'ensemble d'exemple fruits : [Apple, Banana].
for (String x : fruits) {
    System.out.println(x);
}
Apple
Banana
Entrées/sorties et flux en Java

Parcourir une collection avec Iterator

  • Utiliser Iterator<> : prend en charge List, Set, Queue et plus
  • Importer la classe Iterator
import java.util.Iterator;

// Créer un objet `Iterator` nommé `it` pour l'ensemble d'exemple `fruits` Iterator<String> it = fruits.iterator(); // La méthode `.hasNext()` vérifie s'il reste des éléments while (it.hasNext()) { // La méthode `.next()` récupère l'élément System.out.print(it.next());}
Apple Banana
Entrées/sorties et flux en Java

Supprimer des éléments avec Iterator

  • Utiliser .remove() pour supprimer un élément avec Iterator

$$

Iterator<String> it = fruits.iterator();
while (it.hasNext()) {
    String fruit = it.next();
    if (fruit.startsWith("A")) {
        // Retirer l'élément si le nom commence par `A`
        it.remove();
        }
}
// fruits contient maintenant seulement "Banana"
Entrées/sorties et flux en Java

Supprimer des éléments avec Iterator (suite)

  • Avant la suppression :

    System.out.println(fruits);
    
    [Apple, Banana]
    
  • Après la suppression :

    System.out.println(fruits);
    
    [Banana]
    
  • Assure une suppression sécuritaire et évite ConcurrentModificationException

Icône représentant une suppression sécuritaire

Entrées/sorties et flux en Java

Résumé

  • Boucle for-each
    • Prend en charge
      • List(ArrayList,LinkedList)
      • Set(HashSet,TreeSet,LinkedHashSet)
      • Queue(PriorityQueue)
      • Stack(Stack)
    • Ne prend pas en charge
      • Map
      • Suppression d'éléments
  • Iterator
    • Prend en charge
      • List(ArrayList,LinkedList)
      • Set(HashSet,TreeSet,LinkedHashSet)
      • Queue(PriorityQueue)
      • Stack(Stack)
      • Map (doit utiliser keySet().iterator, values().iterator ou entrySet().iterator)
      • Suppression d'éléments
Entrées/sorties et flux en Java

Passons à la pratique !

Entrées/sorties et flux en Java

Preparing Video For Download...