CodeGym /Java-Blog /Random-DE /Java-Iterator
Autor
Oleksandr Miadelets
Head of Developers Team at CodeGym

Java-Iterator

Veröffentlicht in der Gruppe Random-DE
Hallo! In der heutigen Lektion sprechen wir über Java Iterator. Stellen Sie sich vor, Sie gehen in die Bibliothek und möchten ein bestimmtes Buch finden. Wie machst du das? Wenn es sich um Sachbücher handelt, gibt es das Dewey-Dezimalsystem. Wenn es sich um Belletristik handelt, werden sie in alphabetischer Reihenfolge nach ihrem Nachnamen sortiert. Was auch immer Sie suchen, irgendwann müssen Sie die Bücher einzeln durchgehen, bis Sie das finden, wonach Sie suchen. Wann immer Sie eine Sammlung von Dingen in Java haben, sei es in einem Array , einer ArrayList , einer Queue oder einer List gespeichert , wie finden Sie dann einen bestimmten Wert? Irgendwann muss man jedes Element einzeln durchgehen. Dafür gibt es einen Java-Iterator.So verwenden Sie einen Java-Iterator: Eine kurze Anleitung - 1

Was ist ein Iterator in Java?

Was ist ein Iterator in Java? Es ist eine Möglichkeit, jedes Element in einer Sammlung zu betrachten. Und mit Sammlung meinen wir alles in der Sammlungsklasse . Das beinhaltet:
  • Anordnungsliste
  • HashSet
  • LinkedHashSet
  • LinkedList
  • Prioritätswarteschlange
  • Vektor
  • und viele andere…
Es enthält auch die verschiedenen Schnittstellen für diese Klassen, wie zum Beispiel Set , List , Queue , Dequeue und Sorted Set , um nur einige zu nennen. Iterator<E> ist die öffentliche Schnittstellenmethode der Interface Iterator<E> -Klasse. Es wurde in Java 1.2 eingeführt und ersetzte die Aufzählung als Möglichkeit, sequentielle Elemente in einer Sammlung zu untersuchen.

Warum Sie For-Schleifen nicht als Iterator in Java verwenden sollten

Eine der ersten Methoden, die jedem beigebracht wird, eine Sammlung in Java zu durchlaufen, ist eine Schleife. Es sieht aus wie das:

class Main {
  public static void main(String[] args) {
    int exampleArray[] = new int[10];

    //fill array with data

    for(int x = 0; x < exampleArray.length; x++) {
      System.out.println("Content of element " + x + "is: " + exampleArray[x]);
    }
  }
}
Die Ausgabe wäre eine Liste mit folgendem Inhalt:

Content of element 0 is: 0
Content of element 1 is: 1
Content of element 2 is: 2
etc.…
Das hat zwar seinen Nutzen, aber was passiert, wenn die Sammlung keine Elemente in einem indexbasierten System speichert? Beispielsweise haben Set s normalerweise keine Reihenfolge. Daher ist es ratsam, die Verwendung einer for-Schleife als Iterator in Java zu beenden und stattdessen die Verwendung der Klasse Iterator<E> zu üben. Hier sind einige Beispiele für Java-Iteratoren.

So verwenden Sie Iterator in Java

Hier sind einige Beispiele für die Verwendung von Iteratoren in Java. Bei Verwendung der Iterator-Klasse gibt es drei Möglichkeiten, eine Sammlung zu durchlaufen. Sie können eine while()- Schleife, eine for() -Schleife und eine forEach()- Schleife verwenden. Beachten Sie, dass sich diese for-Schleife von der zuvor besprochenen unterscheidet. Hier sind die drei verschiedenen Java-Iterator-Beispiele. Zuerst richten wir die Sammlung ein , die durchlaufen werden soll.

import java.util.*; // imports ArrayList, Collection and Iterator

class Main {
  public static void main(String[] args) {
    Collection<String> example = new ArrayList<String>();

    example.add("Item 1");
    example.add("Item 2");
    example.add("Item 3");
    example.add("Item 4");
  }
}
Dies ist eine einfache Sammlung , die aus einer ArrayList besteht, in die wir vier Elemente geladen haben. Schauen wir uns nun die drei Methoden zur Verwendung der Iterator-Klasse zum Durchlaufen der ArrayList an .

While-Schleife


Iterator<String> iterator = example.iterator();

while (iterator.hasNext()) {
   System.out.println("Element Value= " + iterator.next());
}
Diese while() -Schleife verwendet die boolesche Methode .hasNext() der Iterator- Klasse, um zu prüfen, ob ein zukünftiges Element vorhanden ist. Wenn die Vorbedingung erfüllt ist, wird fortgefahren. Wenn es als falsch zurückgegeben wird, endet die Schleife. Der entscheidende Teil hier ist, dass die Methoden .hasNext() und .next() beide eine erste Prüfung des ersten Elements durchführen. Wenn die Sammlung leer ist und kein erstes Element vorhanden ist, gibt die Methode für die .hasNext()- Methode false zurück und löst für die .next()- Methode eine NoSuchElementException aus .

For-Schleife


for (Iterator<String> iterator = example.iterator(); iterator.hasNext();) {
  System.out.println("Element Value= " + iterator.next());
}
Dies sieht aus wie eine traditionellere for-Schleife. Es verwendet die Methode .hasNext() als Bedingungsprüfungs- und Änderungsteil. Die Initialisierung ist der Aufruf an den Iterator.

Für: Jede Schleife


for (String s : example) {
  System.out.println("Element Value= " + s);
}
Die For:Each- Schleife ist eine for-Schleife, aber wenn Sie nicht wissen, wie man sie liest, kann sie etwas verwirrend sein. Die Syntax einer For:Each- Schleife lautet for (data_type variableName :collectionName){ body} . Diese for:each- Schleife hat einige Nachteile. Erstens kann es die Sammlung nur in eine Richtung durchlaufen. Zweitens müssen Sie jedes Element durchlaufen. Sie können keine davon überspringen. Aber als praktischer Listeniterator in Java ist es die beste Option. Positiv ist, dass die for:each- Schleife sehr einfach zu lesen ist und wenn man sie erst einmal kennt, kann man kaum etwas falsch machen. Wenn Sie sich fragen, was die Ausgabe der drei Iteratorschleifen ist: Sie sind alle gleich:

Element Value= Item 1
Element Value= Item 2
Element Value= Item 3
Element Value= Item 4 

So verwenden Sie einen Iterator in Java für Karten

Karten sind eine beliebte Methode zum Speichern von Daten. Da sie Collection jedoch nicht erweitern , können Sie die vorherigen Iteratoren nicht zum direkten Durchlaufen einer Karte verwenden. Wie verwendet man also einen Iterator in Java, um Maps und HashMaps zu durchlaufen ? Es gibt vier gute Java-Map-Iterator-Methoden. Wir werden sie einzeln abdecken. Laden wir zunächst eine Karte mit einer Reihe von Werten.

import java.util.*; //imports Map and HashMap

class Main {
  public static void main(String[] args) {
    Map<String, String> example = new HashMap<String, String>();

    example.put("alpha", "one");
    example.put("beta", "two");
    example.put("gamma", "three");

  }
}

Java Hashmap Iterator-Methode: forEach(action)


example.forEach((k,v) -> System.out.println("Key: "+ k + ", Value: " + v));
Diese Methode verwendet einen Lambda-Ausdruck zum Durchlaufen. Der Lambda-Operator ist die Methode forEach() und der Textkörper gibt die Werte aus. Dabei wird ein Operator mit mehreren Parametern verwendet. Dies ist die schnellste und sauberste Methode für den Map-Iterator in Java 8.

Java-Hashmap-Iterator-Methode: For:Each()-Schleife


for (Map.Entry<String, String> iterate : example.entrySet()) {
  System.out.println("Key: " + iterate.getKey() + ", Value: " + iterate.getValue());
}
Dabei wird die For:Each- Syntax verwendet, um die Methode „entrySet()“ aufzurufen und eine Menge zurückzugeben, deren Elemente der Schlüssel und der Wert sind. Darüber hinaus sind die Objekte bei Verwendung der .Entry()- Methode nur wahr, während diese Iteration stattfindet.

Java Hashmap Iterator-Methode: Map.Entry<k, v>


Iterator<Map.Entry<String, String>> iterator = example.entrySet().iterator();

while(iterator.hasNext()){
  Map.Entry<String, String> element = iterator.next();
  System.out.println("Key: " + element.getKey() + ", Value: " + element.getValue());
)
Diese Methode konvertiert die Karte erneut in einen Satz, um den Collections- Iterator und die Methoden zu verwenden . Für diese drei Iteratormethoden sieht die Rückgabe folgendermaßen aus:

Key: alpha, Value: one
Key: beta, Value: two
Key: gamma, Value: three
Java Hashmap Iterator Method: keySet() and values()
for (String key : example.keySet()) {
  System.out.println("Key: " + key);
}
for (String value : example.values()) {
  System.out.println("Value: " + value);
}
Dieser gibt die Elemente auf andere Weise zurück. Zuerst werden alle Schlüssel der Reihe nach und dann alle Werte zurückgegeben:

Key: alpha
Key: beta
Key: gamma
Value: one
Value: two
Value: three
Kommentare
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION