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 .
JavaSammlung
Namen = neue ArrayList<>();
Iteratoritr = Namen.iterator();
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.
Iterator-CursorMethoden 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
Iterator
CitiesIterator = Cities.iterator();
Der Iterator „citiesIteartor“ sieht wie folgt aus:
Schritt 1Hier 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();
Schritt 2Wenn 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();
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.
Schritt 4Schritt 5: Wenn wir nach dem Lesen des letzten Elements den folgenden Codeausschnitt ausführen, wird ein falscher Wert zurückgegeben.
CitiesIterator.hasNext();

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-Iterator: VorwärtsrichtungBeispiel: Hier verwenden wir einen Iterator, um ungerade Elemente aus einer ArrayList zu durchlaufen und daraus zu entfernen.
Javaimport 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.