Heim > Java > javaLernprogramm > Detaillierte Erklärung des Iterators in Java

Detaillierte Erklärung des Iterators in Java

黄舟
Freigeben: 2017-09-25 10:16:18
Original
1371 Leute haben es durchsucht

Java verwendet Iteratoren, um eine gemeinsame Betriebsschnittstelle für verschiedene Container bereitzustellen. Freunde, die es benötigen, können sich darauf beziehen

Was ist ein Iterator?

In Java gibt es viele Datencontainer und ihre Operationen weisen viele Gemeinsamkeiten auf. Java verwendet Iteratoren, um eine gemeinsame Operationsschnittstelle für verschiedene Container bereitzustellen. Dadurch wird der Durchlaufvorgang des Containers von seiner spezifischen zugrunde liegenden Implementierung isoliert, wodurch ein Entkopplungseffekt erzielt wird.

In der Iterator-Schnittstelle sind drei Methoden definiert:

Die zugehörigen Klassen unter der Map-Schnittstelle in der Java-Sammlungsklasse sind nicht mit den zugehörigen Klassen identisch der Collection-Schnittstelle Implementieren Sie die Methode get(). In Szenarien, in denen eine Durchlaufausgabe erreicht werden soll, kann die Methode get() nicht direkt zum Abrufen der Daten im Objekt verwendet werden. Java selbst bietet jedoch eine andere Methode zum Durchlaufen von Daten. Das heißt, der Iterator kann zwar zum Durchlaufen und Lesen von Daten verwendet werden, es handelt sich jedoch im Wesentlichen nicht um ein Entwurfsmuster, sondern um ein „leichtes“ Objekt. Im Folgenden wird beschrieben, wie Sie Iterator in verschiedenen Schnittstellen verwenden:

(1) Die Verwendung von Iterator in der Collection-Schnittstelle.

Obwohl die zugehörigen Klassen der Collection-Schnittstelle die Methode get() implementieren, ist es dennoch sinnvoll, Iterator für sie zu verwenden. Nehmen wir ArrayList als Beispiel, um die beiden Funktionen von Iterator zu diskutieren in der Sammlung. Verwendung:

 

1. Arbeiten Sie mit der while()-Schleife zusammen, um eine Durchlaufausgabe zu erzielen:


 ArrayList list = new ArrayList();
 //此处省略list的具体赋值过程
 Iterator it = list.iterator();
     while(it.hasNext()){
       System.out.println(it.next());
     }
Nach dem Login kopieren
in while() Die Beurteilungsbedingung it.hasNext() wird verwendet, um zu beurteilen, ob ein anderes Element darin vorhanden ist. Wenn ja, wird die Schleife fortgesetzt. Die it.next() in der Ausgabeanweisung kann nicht nur den „Zeiger“ bewegen. um eine Stelle zurück, aber auch verschieben Das aktuelle Element wird zur Ausgabe zurückgegeben.

 

2. Arbeiten Sie mit der for()-Schleife zusammen, um eine Durchlaufausgabe zu erzielen:


 ArrayList list = new ArrayList();
 //此处省略list的赋值过程
 for(Iterator it = list.iterator();it.hasNext();){
       System.out.println(it.next());
 }
Nach dem Login kopieren
Die Prinzipien der Verwendung in der Die for()-Schleife sieht wie folgt aus, while() ist dasselbe, daher werde ich hier nicht auf Details eingehen.

Das Obige wird jedoch in einer allgemeinen for()-Schleife verwendet. Wir können es auch mit der for every-Schleife verwenden, um den Iterator zu ersetzen, da for every selbst einem Iterator entspricht:


 ArrayList list = new ArrayList();
 //此处同样省略list的赋值过程
 for(Object array:list){
      System.out.println(array);
 }
Nach dem Login kopieren
Es ist zu beachten, dass „for every“ nicht zum Hinzufügen oder Löschen von Elementen geeignet ist. Wenn es nur zum Durchlaufen von Elementen verwendet wird, ist diese Schreibmethode möglicherweise prägnanter.

(2) Die Verwendung von Iterator in der Map-Schnittstelle:

Im Folgenden wird HashMap als Beispiel verwendet, um die beiden Hauptmethoden von zu diskutieren Verwendung von Iteratoren.

1. Kombination mit 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());
 }
Nach dem Login kopieren
//Wenn Sie möchten, dass die Ausgabe stärker formatiert wird, können Sie Folgendes tun: Sie können es selbst tun. Schreiben Sie die toString()-Methode neu. Da das Umschreiben der toString-Methode nicht der Schwerpunkt dieses Artikels ist, werden wir vorerst nicht darauf eingehen.

Die Iterator-Anwendungsmethode unter der Map-Schnittstelle unterscheidet sich geringfügig von der in Collection. Die Methode „entrySet()“ wird verwendet, um das gesamte Schlüssel-Wert-Paar zurückzugeben.

2. Kombination mit 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());
 }
Nach dem Login kopieren
Es gibt oben mehrere Beispiele, daher ist es nicht nötig, fortzufahren Erklären Sie hier das Prinzip.

Die Verwendung von „for every“ anstelle von „Iterator“ wird auch hier veröffentlicht:


HashMap<K,V> myMap=new HashMap<K,V>();
 //省略myMap赋值过程
 for(Object oj:myMap.entrySet()){
       System.out.println(oj);
 }
Nach dem Login kopieren
Die Methode „entrySet()“ wird insbesondere auch in „for every“ verwendet Wenn Sie Fragen zur EntrySet-Methode haben, wenden Sie sich bitte an Baidu. In diesem Artikel wird sie nicht im Detail beschrieben.

Fazit: Da die Iterator-Klasse im java.util-Pfad gekapselt ist, müssen Sie zur Verwendung von Iterator java.util.Iterator; oder import java.util.*;

Zusammenfassung

Das obige ist der detaillierte Inhalt vonDetaillierte Erklärung des Iterators in Java. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage