Java Iterator
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
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 :
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
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
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.
Autres extensions
Java Collections Framework