Maison > Java > javaDidacticiel > Explication détaillée de l'itérateur en Java

Explication détaillée de l'itérateur en Java

黄舟
Libérer: 2017-09-25 10:16:18
original
1403 Les gens l'ont consulté

Java utilise des itérateurs pour fournir une interface d'exploitation commune pour différents conteneurs. Cet article partagera avec vous l'analyse de l'utilisation de l'itérateur en Java. Les amis qui en ont besoin peuvent s'y référer

. Qu'est-ce qu'un itérateur

En Java, il existe de nombreux conteneurs de données et leurs opérations présentent de nombreux points communs. Java utilise des itérateurs pour fournir une interface d'opération commune pour différents conteneurs. Cela isole l'opération de traversée du conteneur de son implémentation sous-jacente spécifique, obtenant ainsi un effet de découplage.

Trois méthodes sont définies dans l'interface Iterator :

Les classes associées sous l'interface Map dans la classe de collection Java ne sont pas les mêmes que les classes associées de l'interface Collection Implémentez la méthode get(), donc dans les scénarios où la sortie de parcours doit être obtenue, la méthode get() ne peut pas être utilisée directement pour obtenir les données dans l'objet, mais Java lui-même fournit une autre méthode de parcours de données, qui c'est-à-dire en utilisant l'Iterator. Bien qu'Iterator puisse être utilisé pour parcourir et lire des données, ce n'est pas essentiellement une méthode, c'est simplement un modèle de conception. Ce qui suit décrit comment utiliser Iterator dans différentes interfaces :

(1) L'utilisation d'Iterator dans l'interface Collection.

Bien que les classes associées de l'interface Collection implémentent la méthode get(), il est toujours approprié d'utiliser Iterator sur elles. Prenons ArrayList comme exemple pour discuter des deux fonctions d'Iterator. dans Collection. Comment utiliser :

 1. Utilisez la boucle while() pour obtenir une sortie traversante :


 ArrayList list = new ArrayList();
 //此处省略list的具体赋值过程
 Iterator it = list.iterator();
     while(it.hasNext()){
       System.out.println(it.next());
     }
Copier après la connexion

while() La condition de jugement it.hasNext() est utilisée pour juger s'il contient un autre élément. Si tel est le cas, la boucle continuera. La fonction it.next() dans l'instruction de sortie ne peut pas seulement déplacer le "pointeur" vers l'arrière. un endroit, mais aussi déplacer l'élément actuel est renvoyé pour la sortie.

 2. Coopérer avec la boucle for() pour obtenir une sortie traversante :


 ArrayList list = new ArrayList();
 //此处省略list的赋值过程
 for(Iterator it = list.iterator();it.hasNext();){
       System.out.println(it.next());
 }
Copier après la connexion

Les principes d'utilisation dans le Les boucles for() sont les suivantes tandis que() est la même, je n'entrerai donc pas dans les détails ici.

Cependant, ce qui précède est utilisé dans une boucle for() générale. Nous pouvons également l'utiliser avec la boucle for each pour remplacer Iterator, car for each lui-même est équivalent à un itérateur :


 ArrayList list = new ArrayList();
 //此处同样省略list的赋值过程
 for(Object array:list){
      System.out.println(array);
 }
Copier après la connexion

Il est à noter que for each ne convient pas pour ajouter ou supprimer des éléments. S'il est simplement utilisé pour parcourir des éléments, cette méthode d'écriture peut être plus concise.

(2) L'utilisation d'Iterator dans l'interface Map :

Ce qui suit utilise HashMap comme exemple pour discuter des deux méthodes principales de en utilisant des itérateurs.

1. Combinaison avec while()


 HashMap<K,V> myMap = new HashMap<K,V>();
 //省略myMap的的赋值过程
 Iterator<Map.Entry<K,V> it=myMap.entrySet().iterator();
 while(it.hasNext()){
     System.out.println(it.next());
 }
Copier après la connexion

//Si vous souhaitez que la sortie soit plus formatée, vous peut le faire vous-même Réécrire la méthode toString() Puisque la réécriture de la méthode toString n'est pas le sujet de cet article, nous n'en discuterons pas pour le moment.

La méthode d'application de l'itérateur sous l'interface Map est légèrement différente de celle de Collection. La méthode EntrySet() est utilisée pour renvoyer l'intégralité de la paire clé-valeur.

2. Combinaison avec for()


 HashMap<K,V> myMap=new HashMap<K,V>();
 //省略myMap的赋值过程
 for(Iterator<Map.Entry<K,V>> it=myMap.entrySet().iterator();it.hasNext();){
       System.out.println(it.next());
 }
Copier après la connexion

Il y a plusieurs exemples ci-dessus, il n'est donc pas nécessaire de continuer ici. Expliquez le principe.

L'utilisation de for each au lieu de Iterator est également publiée ici :


HashMap<K,V> myMap=new HashMap<K,V>();
 //省略myMap赋值过程
 for(Object oj:myMap.entrySet()){
       System.out.println(oj);
 }
Copier après la connexion

La méthode EntrySet() est également utilisée dans for each, spécifiquement Si Si vous avez des questions sur la méthode EntrySet, veuillez vous rendre sur Baidu. Cet article ne la décrira pas en détail.

Conclusion : Puisque la classe Iterator est encapsulée dans le chemin java.util, pour utiliser Iterator, vous devez importer java.util.Iterator; ou importer java.util.*;

Résumé

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal