logo

Iterator in Java

Ein Iterator in Java ist einer der am häufigsten verwendeten Cursor im Java Collections Framework . Es wird verwendet, um Elemente einer Sammlung einzeln zu durchlaufen oder zu iterieren.

  • Es wird nur zum Durchlaufen von Elementen in Vorwärtsrichtung verwendet.
  • Entfernt Elemente sicher während des Durchlaufs mit „remove()“.
  • Iterator ist ein universeller Cursor, der für alle Sammlungstypen gilt – Listensatz und Warteschlange.

Deklaration des Iterators

Öffentlicher Schnittstellen-Iterator

Hier stellt E den Typ der Elemente dar, über die iteriert werden soll.



Objekterstellung des Iterators

Ein Iterator-Objekt wird durch Aufrufen der iterator()-Methode für ein Sammlungsobjekt erstellt. Hier verwenden wir einen Iterator, um jedes Element in einem zu durchlaufen und zu drucken ArrayList .

SammlungNamen = neue ArrayList<>();
Iteratoritr = Namen.iterator();

Java
import java.util.ArrayList; import java.util.Iterator; public class Geeks {  public static void main(String[] args) {    // Create an ArrayList and add some elements  ArrayList<String> al = new ArrayList<>();  al.add('A');  al.add('B');  al.add('C');  // Obtain an iterator for the ArrayList  Iterator<String> it = al.iterator();  // Iterate through the elements and print each one  while (it.hasNext()) {    // Get the next element  String n = it.next();   System.out.println(n);   }  } } 

Ausgabe
A B C 

Hierarchie des Iterators

Iterator ist Teil von java.util-Paket und wird von allen Sammlungsklassen über ihre Unterschnittstellen implementiert.

listiterator_extends_iterator_' title=Iterator-Cursor

Methoden der Iterator-Schnittstelle

Die Iterator-Schnittstelle definiert drei Methoden, wie unten aufgeführt:

  • hasNext(): Gibt true zurück, wenn die Iteration mehr Elemente enthält.
  • nächste(): Gibt das nächste Element in der Iteration zurück. Es wirft NoSuchElementException wenn kein Element mehr vorhanden ist.
  • entfernen(): Entfernt das letzte von next() zurückgegebene Element. Diese Methode kann nur einmal pro Aufruf von next() aufgerufen werden.

Notiz : Die Methode „remove()“ kann zwei Ausnahmen auslösen, und zwar wie folgt:

Internes Arbeiten

In diesem Abschnitt werden wir versuchen zu verstehen, wie Java Iterator und seine Methoden intern funktionieren. Nehmen wir das folgende LinkedList-Objekt, um diese Funktionalität zu verstehen.

Schritt 1: Lassen Sie uns nun ein Iterator-Objekt für das List-Objekt erstellen, wie unten gezeigt:

XML-Kommentar

IteratorCitiesIterator = Cities.iterator();

Der Iterator „citiesIteartor“ sieht wie folgt aus:

Java-Iterator Schritt 1' loading='lazy' title=Schritt 1

Hier zeigt der Cursor des Iterators vor das erste Element der Liste.

Schritt 2: Jetzt führen wir den folgenden Codeausschnitt aus.

Snipping-Tool in Ubuntu

CitiesIterator.hasNext();
CitiesIterator.next();

Java-Iterator Schritt 2' loading='lazy' title=Schritt 2

Wenn wir das obige Code-Snippet ausführen, zeigt der Cursor des Iterators auf das erste Element in der Liste, wie im obigen Diagramm gezeigt.

Schritt 3: Jetzt führen wir den folgenden Codeausschnitt aus.

CitiesIterator.hasNext();
CitiesIterator.next();

Java-Iterator Schritt 3' loading='lazy' title=Schritt 3


Wenn wir das obige Code-Snippet ausführen, zeigt der Cursor des Iterators auf das zweite Element in der Liste, wie im obigen Diagramm gezeigt.

Schritt 4: Führen Sie diesen Vorgang aus, um den Cursor des Iterators zum Endelement der Liste zu bringen.

Java-Iterator-Schritt n' loading='lazy' title=Schritt 4

Schritt 5: Wenn wir nach dem Lesen des letzten Elements den folgenden Codeausschnitt ausführen, wird ein falscher Wert zurückgegeben.

CitiesIterator.hasNext();

Java-Iterator am Ende' loading='lazy' title=

Da der Cursor des Iterators auf das nach dem letzten Element der Liste zeigt hasNext() Methode gibt einen falschen Wert zurück.

Notiz: Der Java-Iterator unterstützt nur die Iteration in Vorwärtsrichtung und wird daher als unidirektionaler Cursor bezeichnet. Im Gegensatz dazu ist ListIterator bidirektional und ermöglicht die Durchquerung in beide Richtungen.

Java-Ilterator-6' loading='lazy' title=Java-Iterator: Vorwärtsrichtung

Beispiel: Hier verwenden wir einen Iterator, um ungerade Elemente aus einer ArrayList zu durchlaufen und daraus zu entfernen.

Java
import java.util.ArrayList; import java.util.Iterator; public class Geeks {  public static void main(String[] args) {    // Creating an ArrayList of Integer type  ArrayList<Integer> al = new ArrayList<>();  // Adding elements to the ArrayList  for (int i = 0; i < 10; i++) {  al.add(i);  }  // Printing the original list  System.out.println('Original List: ' + al);  // Creating an Iterator for the ArrayList  Iterator<Integer> itr = al.iterator();  // Iterating through the list and removing odd elements  while (itr.hasNext()) {    // Getting the next element  int i = itr.next();     System.out.print(i + ' ');   // Removing odd elements  if (i % 2 != 0) {  itr.remove();  }  }  System.out.println();  // Printing the modified list after removal of odd elements  System.out.println('Modified List: ' + al);  } } 

Ausgabe
Original List: [0 1 2 3 4 5 6 7 8 9] 0 1 2 3 4 5 6 7 8 9 Modified List: [0 2 4 6 8] 

Erläuterung: Im obigen Beispiel erstellen wir eine ArrayList mit ganzen Zahlen, durchlaufen diese dann mit einem Iterator und entfernen alle ungeraden Zahlen. Es druckt die Liste vor und nach dem Entfernen der ungeraden Elemente und druckt die geänderte Liste nur mit geraden Zahlen.