Java Iterator

Java 集合框架Java Collections Framework

L'Iterator Java est un mécanisme du Java Collections Framework et une interface utilisée pour parcourir des collections (telles que les listes, les ensembles et les maps, etc.).

Il fournit une manière unifiée d'accéder aux éléments d'une collection sans avoir besoin de comprendre les détails d'implémentation spécifiques de la collection sous-jacente.

L'Iterator Java n'est pas une collection ; c'est une méthode d'accès aux collections, et peut être utilisé pour parcourirArrayListetHashSetet d'autres collections.

Iterator est l'implémentation la plus simple de l'itérateur Java. ListIterator est une interface de l'API Collection qui étend l'interface Iterator.

L'interface Iterator définit plusieurs méthodes. Les trois les plus couramment utilisées sont :

  • next()- Renvoie l'élément suivant de l'itérateur et déplace le pointeur de l'itérateur vers la position suivante.

  • hasNext()- Utilisé pour déterminer s'il y a un élément suivant dans la collection auquel on peut accéder.

  • remove()- Supprime de la collection le dernier élément accédé par l'itérateur (opération facultative).

La classe Iterator se trouve dans le package java.util. Vous devez l'importer avant de l'utiliser. La syntaxe est la suivante :

import java.util.Iterator; // 引入 Iterator 类

En utilisant un itérateur, nous pouvons accéder aux éléments d'une collection un par un sans utiliser les boucles for traditionnelles ni les index. Cette approche est plus concise et flexible, et elle fonctionne pour divers types de collections.

Obtenir un itérateur

Pour obtenir un itérateur à partir d'une collection, vous pouvez utiliser la méthode iterator() :

Exemple

// Importer les classes ArrayList et Iterator
import java.util.ArrayList;
import java.util.Iterator;

public class ExampleTest {
    public static void main(String[] args) {

        // Créer une collection
        ArrayList<String> sites = new ArrayList<String>();
        sites.add("Google");
        sites.add("Example");
        sites.add("Taobao");
        sites.add("Zhihu");

        // Obtenir l'itérateur
        Iterator<String> it = sites.iterator();

        // Afficher le premier élément de la collection
        System.out.println(it.next());
    }
}

L'exécution du code ci-dessus produit la sortie suivante :

Google

Lors de l'utilisation d'un itérateur pour parcourir une collection, si la collection est modifiée pendant le parcours (par exemple, en ajoutant ou en supprimant des éléments), cela peut provoquer une ConcurrentModificationException. Pour éviter ce problème, vous pouvez utiliser la méthoderemove()propre à l'itérateur pour effectuer des opérations de suppression.

Parcourir les éléments d'une collection

La façon la plus simple de faire en sorte que l'itérateur it renvoie tous les éléments de la collection un par un est d'utiliser une boucle while :

while(it.hasNext()) {
    System.out.println(it.next());
}

Ce qui suit affiche tous les éléments de la collection sites :

Exemple

// Importer les classes ArrayList et Iterator
import java.util.ArrayList;
import java.util.Iterator;

public class ExampleTest {
    public static void main(String[] args) {

        // Créer une collection
        ArrayList<String> sites = new ArrayList<String>();
        sites.add("Google");
        sites.add("Example");
        sites.add("Taobao");
        sites.add("Zhihu");

        // Obtenir l'itérateur
        Iterator<String> it = sites.iterator();

        // Afficher tous les éléments de la collection
        while(it.hasNext()) {
            System.out.println(it.next());
        }
    }
}

L'exécution du code ci-dessus produit la sortie suivante :

Google
Example
Taobao
Zhihu

Suppression d'éléments

Pour supprimer des éléments d'une collection, vous pouvez utiliser la méthode remove().

Dans l'exemple suivant, nous supprimons les éléments inférieurs à 10 de la collection :

Exemple

// Importer les classes ArrayList et Iterator
import java.util.ArrayList;
import java.util.Iterator;

public class ExampleTest {
    public static void main(String[] args) {
        ArrayList<Integer> numbers = new ArrayList<Integer>();
        numbers.add(12);
        numbers.add(8);
        numbers.add(2);
        numbers.add(23);
        Iterator<Integer> it = numbers.iterator();
        while(it.hasNext()) {
            Integer i = it.next();
            if(i < 10) {  
                it.remove();  // Supprimer les éléments inférieurs à 10
            }
        }
        System.out.println(numbers);
    }
}

L'exécution du code ci-dessus produit la sortie suivante :

[12, 23]

Remarque :L'itérateur Java est un mécanisme de parcours à sens unique, ce qui signifie qu'il ne peut parcourir les éléments d'une collection que de l'avant vers l'arrière et ne peut pas parcourir en sens inverse. De plus, lorsque vous utilisez un itérateur pour parcourir une collection, vous ne pouvez pas modifier directement les éléments de la collection ; vous devez plutôt utiliser la méthode remove() de l'itérateur pour supprimer l'élément courant.

Java 集合框架Java Collections Framework

Autres extensions