Einführung in Iterator in Java

Ein Iterator ist eine Schnittstelle, mit der Elemente einzeln in einer Auflistung abgerufen werden. Es ist in einem Java-Paket namens Java verfügbar. util-Paket. Die Auflistungs-API implementiert die iterator () -Methode, sodass Daten von Schnittstellen wie Map, List, Queue, Deque und Set abgerufen werden können, die alle vom Auflistungsframework implementiert werden. Wie der Name schon sagt, durchläuft ein Iterator in Java eine Sammlung von Objekten.

Syntax:

Iterator iterator()

Unter dem Iterator befindet sich der Name eines Objekts, das durch Aufrufen der Methode iterator () der Erfassungsschnittstelle erstellt wurde. "Auflistung" ist der Name des Auflistungsobjekts.

Iterator iter = collection.iterator();

Methoden von Iterator in Java

Iteratoren verfügen in Java über vier Methoden, mit denen Sie Sammlungen durchsuchen und die erforderlichen Informationen abrufen können. Sie sind wie folgt:

  • hasNext (): Dies ist eine Methode, die den booleschen Wert true zurückgibt, wenn in der Iteration ein nächstes Element vorhanden ist, und den booleschen Wert false, wenn kein Element vorhanden ist.
  • next (): Diese Methode gibt den in der nächsten Iteration vorhandenen Elementwert zurück. Angenommen, es gibt keine Elemente, die in der nächsten Iteration zurückgegeben werden sollen, dann wird eine "NoSuchElementException" ausgelöst.
  • remove (): Diese Methode entfernt das vom Iterator zurückgegebene aktuelle Element aus der Auflistung. Wenn diese Methode vor der next () -Methode aufgerufen wird, wird "IllegalStateException" ausgelöst.
  • forEachRemaining (): Diese Methode führt die Operation für alle verbleibenden Elemente in der Auflistung aus, bis alle verarbeitet wurden oder bis eine Ausnahme ausgelöst wird. Dies ist auch eine von der Oracle Corporation in ihrem Java SE 8-Release neu eingeführte Methode.

Beispiel für Iterator in Java

Unten sehen Sie das Beispiel für Iterator in Java:

Code:

import java.io.*;
import java.util.*;
public class IteratorExample (
public static void main(String() args)
(
ArrayList val = new ArrayList();
val.add("Iteration started");
val.add("Printing iteration1");
val.add("Printing iteration2");
val.add("Printing iteration3");
val.add("End of iteration");
// Iterates through the list
Iterator iter = val.iterator();
System.out.println("The values of iteration are as follows: ");
while (iter.hasNext())
System.out.println(iter.next() + " ");
System.out.println();
)
)

Ausgabe:

Von Iterator-Methoden ausgelöste Ausnahmen

In einer Liste von Elementen kann ein Iterator nur Informationen zu den vorhandenen Elementen abrufen. Es stürzt ab oder löst eine Ausnahme aus, wenn versucht wird, auf ein Element zuzugreifen, das in der nächsten Iteration nicht vorhanden ist. Hier lernen wir die verschiedenen Arten von Ausnahmen kennen, die wir bei der Implementierung der Iterator-Methoden erhalten.

1. next () Methode

Beim Durchlaufen einer Gruppe von Elementen und Abrufen dieser Elemente mit dieser Methode kann die folgende Ausnahme auftreten.

  • NoSuchElementException: Dies tritt auf, wenn next () versucht, ein Element abzurufen, das in der aktuellen Liste nicht vorhanden ist. Daher muss immer ein hasNext () verwendet werden, bevor next () aufgerufen wird.

2. remove () Methode

Es gibt zwei Arten von Ausnahmen, die hier auftreten können:

  • IllegalStateException: Wenn die remove () -Methode vor der next () -Methode aufgerufen wird, wird diese Ausnahme ausgelöst. Dies liegt daran, dass die Methode versucht, ein Element zu entfernen, das von der next () -Methode noch nicht angegeben wurde, und daher fehlschlägt. Um diese Ausnahme zu beheben, muss next () aufgerufen werden, um auf das erste Element zu verweisen. Anschließend kann remove () aufgerufen werden, um dasselbe Element aus der Liste zu entfernen.
  • UnsupportedOperationException: Diese Ausnahme wird normalerweise ausgelöst, wenn versucht wird, ein Listenobjekt durch Hinzufügen oder Entfernen einer Operation zu ändern, die keine Änderung unterstützt. Wenn beispielsweise versucht wird, ein Array von Arrays.asList in eine Liste zu konvertieren, wird diese Ausnahme ausgelöst. Dies liegt daran, dass das List-Objekt eine feste Größe hat, da es vom Wrapper aus ArrayList erstellt wird und daher Änderungen nicht zulässig sind. Um dieses Problem zu beheben, konvertieren Sie das Objekt "Arrays.asList" in "ArrayList" oder "LinkedList", bevor Sie Vorgänge wie "Hinzufügen / Entfernen" ausführen.

Syntax:

//ArrayList is created from the list having fixed size
list = new ArrayList(list);
Iterator iter = list.iterator();
while(iter.hasNext())(
if( iter.next().equals("First iteration") )(
iter.remove();
)
)

Methoden von ListIterator

Mit diesen Methoden kann der Iterator in beide Richtungen des Erfassungsobjekts wandern. Es folgen einige von ihnen:

  • add (): Diese Methode fügt den angegebenen Objektwert ein und wird beim Aufruf der next () -Methode zurückgegeben.
  • hasNext (): Diese Methode ist dieselbe wie die in Iteratortypen erwähnte, die je nach dem nächsten Element, das einen Wert hat, Boolean true / false zurückgibt.
  • hasPrevious (): Diese Methode ist im Gegensatz zu hasNext () und gibt Boolean true zurück, wenn die Liste ein vorheriges Element enthält und umgekehrt.
  • next (): Diese Methode ruft das nächste Element aus der angegebenen Liste ab.
  • previous (): Diese Methode ruft das vorherige Element aus der Liste ab.
  • remove (): Löscht das aktuelle Element aus der Liste. Wenn diese Methode vor next () oder previous () aufgerufen wird, wird eine "IllegalStateException" ausgelöst.

Beispiel für ListIterator

Unten sehen Sie ein Beispiel in ArrayList für ListIterator.

Code:

import java.util.*;
public class IteratorExample (
public static void main(String args()) (
// Creating an array list
ArrayList array = new ArrayList();
// add elements to the array list
array.add("First element");
array.add("Second element");
array.add("Third element");
array.add("Fourth element");
array.add("Fifth element");
array.add("Sixth element");
// Displaying elements of an array
System.out.println("Printing input of the array: ");
Iterator iter = array.iterator();
while(iter.hasNext()) (
Object value = iter.next();
System.out.println(value + " ");
)
System.out.println();
// To update the elements of iteration
ListIterator listiter = array.listIterator();
while(listiter.hasNext()) (
Object value = listiter.next();
listiter.set(value + "+");
)
System.out.print("Updated array elements are as follows: ");
iter = array.iterator();
while(iter.hasNext()) (
Object value = iter.next();
System.out.print(value + " ");
)
System.out.println("\n");
// To display the contents in backward direction
System.out.println("Printing elements in backward direction: ");
while(listiter.hasPrevious()) (
Object value = listiter.previous();
System.out.print(value + " ");
)
System.out.println();
)
)

Ausgabe:

Vorteile von Iteratoren in Java

Nachfolgend sind die Vorteile von Iteratoren aufgeführt:

  1. Es unterstützt alle Klassen unter der Collection-Schnittstelle.
  2. Die Methoden eines Iterators sind recht einfach und leicht zu verstehen und zu implementieren.
  3. Elemente einer Sammlung können mithilfe von Iteratoren einfach geändert (hinzugefügt / entfernt) werden.
  4. Der Zugriff auf Elemente über Iteratoren führt nicht zu Laufzeitausnahmen.
  5. Das Datenhandling ist effizient.
  6. Es kann gleichzeitig über verschiedene Variablen iterieren, indem der Iterationsstatus jeder Variablen separat gehalten wird.

Einschränkungen von Iteratoren in Java

Nachfolgend sind die Einschränkungen von Iteratoren aufgeführt:

  1. Java-Iterator kann nur in einer Richtung iterieren, dh in Vorwärtsrichtung.
  2. Es kann nicht verwendet werden, um gleichzeitig zwischen zwei verschiedenen Datenstrukturen zu iterieren.
  3. Es kann nicht zum Zurückverfolgen eines Elements verwendet werden.
  4. Die Struktur des Elements, das iteriert wird, kann nicht geändert werden, da die Position des Elements gespeichert wird.
  5. Könnte in bestimmten Fällen ineffizient sein, da das direkte Durchqueren der Elemente effizienter ist.

Fazit

Iteratoren sind die am häufigsten verwendete Methode zum Abrufen von Elementen von der Erfassungsschnittstelle. Es heißt Universal Java Cursor und gilt für alle Collection-Klassen.

Empfohlener Artikel

Dies ist eine Anleitung zu Iterator in Java. Hier diskutieren wir Methoden und Beispiele von Iterator in Java zusammen mit seinen Einschränkungen und Vorteilen. Sie können auch unsere anderen Artikelvorschläge durchgehen, um mehr zu erfahren -

  1. Einführung in Heap Sort in Java
  2. Überschreiben in Java (Beispiele)
  3. Iteratoren in C # mit Vor- und Nachteilen
  4. Die 10 häufigsten Fragen im Vorstellungsgespräch für Java Collection
  5. Werfen vs wirft | Die 5 wichtigsten Unterschiede, die Sie kennen sollten