Iterieren durch eine verknüpfte Liste in Java

Rashmi Patidar 12 Oktober 2023
  1. Iterieren über die Linked-List mit der for-Schleife in Java
  2. Durchlaufen Sie die verknüpfte Liste mithilfe der erweiterten for-Schleife in Java
  3. Durchlaufen Sie die verknüpfte Liste mit der while-Schleife
  4. Iterieren Sie die verknüpfte Liste mit der Klasse Iterator in Java
  5. Iterieren Sie die verknüpfte Liste mit Java 8 Streams
Iterieren durch eine verknüpfte Liste in Java

Eine verknüpfte Liste ist eine lineare und geordnete Sammlung von Datenelementen. Die Anordnung der Elemente erfolgt an allgegenwärtigen oder zufälligen Stellen im Speicher. Die Datenstruktur der verknüpften Liste ist über Knoten verbunden. Der Node enthält das Datenfeld und die Referenzverbindung, die Speicherorte des nächsten Elements in der Sequenz sind.

Wir speichern die verknüpften Listenelemente an nicht zusammenhängenden Speicherorten und der letzte Knoten enthält einen Zeiger auf die Nullreferenz.

Es gibt viele Möglichkeiten, eine verknüpfte Liste zu durchlaufen. Hier sind einige Möglichkeiten, die unten erwähnt werden.

Iterieren über die Linked-List mit der for-Schleife in Java

Die Klasse LinkedList wird mit dem Schlüsselwort new im folgenden Codebeispiel instanziiert. Die Methode add() der Klasse LinkedList fügt der Liste ein Element hinzu. Die Methode add hängt das angegebene Element an das Ende dieser Liste an. Diese Methode entspricht der Methode addLast. Die Methode gibt true zurück, wenn das Element erfolgreich zur Liste hinzugefügt wurde.

Nach der Erstellung der Liste verwenden wir die for-Schleife für die Iteration darüber. Im folgenden Code ist int i=0 eine Instanziierung der Zählervariablen. Verwenden Sie eine Bedingung, die angibt, dass die Variable kleiner als die Größe der Liste sein soll. Die Größe der Liste wird mit der Methode size() berechnet. Zuletzt erhöht sich der Wert der Variablen um eins. Dieser vollständige Vorgang wird ausgeführt, bis der Variablenwert die Größe der Liste überschreitet.

package linkedList;

import java.util.LinkedList;

public class IterateLinkedListUsingForLoop {
  public static void main(String[] args) {
    LinkedList<String> list = new LinkedList<>();
    list.add("First");
    list.add("Second");
    System.out.println("Iterating the list using for-loop");
    for (int i = 0; i < list.size(); i++) {
      System.out.println(list.get(i));
    }
  }
}

Das obige Programm erzeugt die Ausgabe wie unten angegeben.

Iterating the list using for-loop
First
Second

Durchlaufen Sie die verknüpfte Liste mithilfe der erweiterten for-Schleife in Java

Die erweiterte for-Schleife wird auch als for-each-Schleife bezeichnet und ist ein Typ der for-Schleife.

Im folgenden Code sollten wir ein verknüpftes Listenobjekt instanziieren. Dann sollten einige Elemente (z. B. String-Objekte) hinzugefügt werden. Für die Iteration werden wir in diesem Fall for-each verwenden.

package linkedList;

import java.util.LinkedList;

public class IteratingLinkedListUsingForEach {
  public static void main(String[] args) {
    LinkedList<String> list = new LinkedList<>();
    list.add("First");
    list.add("Second");
    for (String temp : list) {
      System.out.println(temp);
    }
  }
}

Die Ausgabe des Programms ist die gleiche wie im ersten Programm.

Durchlaufen Sie die verknüpfte Liste mit der while-Schleife

Das Instanziieren und Hinzufügen von Elementen zum Auflistungsprozess ist in allen genannten Punkten ähnlich.

Im folgenden Beispiel wird der Zählervariablenwert außerhalb der while-Schleife auf 0 instanziiert. Die while-Schleifensyntax hat keinen Platz für die Instanziierung. Wenden Sie nun die Bedingung an. Dies prüft, ob die Variable kleiner als die Größe der angegebenen Liste ist. Es wird true zurückgegeben und die Funktion println() wird ausgeführt. Danach sollten wir die Zählervariable erhöhen. Der Vorgang wird wiederholt, bis die Variable die Listengröße überschreitet.

package linkedList;

public class IteratingLinkedListUsingWhileLoop {
  public static void main(String[] args) {
    LinkedList<String> list = new LinkedList<>();
    list.add("First");
    list.add("Second");
    int i = 0;
    while (i < list.size()) {
      System.out.println(list.get(i));
      i++;
    }
  }
}

Iterieren Sie die verknüpfte Liste mit der Klasse Iterator in Java

Ein Iterator ist eine Klasse, die sich mit der Schleife von Collections-Objekten befasst. Dies sind Array, ArrayList, LinkedList usw. Wir nennen es einen Iterator, da er die Sammlungsobjekte durchläuft. Man sollte Methoden in der Iterator-Klasse verwenden, um über die Collections-Objekte zu iterieren.

Wir verwenden die Methode iterator(), um einen Iterator für jede Sammlung zu erhalten. Die Methode hasNext prüft, ob die Liste mehr Elemente enthält. Es gibt true zurück, wenn in der Iteration mehr Elemente vorhanden sind.

Die Methode next ruft das nächste Element in der Schleife ab. Es gibt das nächste vorhandene Objekt in der Iteration zurück und löst NoSuchElementException aus, wenn in der Liste kein Element vorhanden ist.

Der folgende Code demonstriert die Iterator-Klasse und ihre Methoden.

package linkedList;

public class IteratingLinkedListUsingIterator {
  public static void main(String[] args) {
    LinkedList<String> list = new LinkedList<>();
    list.add("First");
    list.add("Second");
    Iterator<String> iterator = list.iterator();
    while (iterator.hasNext()) {
      System.out.println(iterator.next());
    }
  }
}

Iterieren Sie die verknüpfte Liste mit Java 8 Streams

Ein stream wird immer über einem Collection-Objekt gebildet. Im folgenden Programm verwenden wir dafür die Methode stream. Funktionen werden über die Kette von Stream-Funktionen angewendet. Das forEach ist eine terminal-Operation. Dies bedeutet, dass nach einer Terminalfunktion keine Operation ausgeführt werden kann. Es wird ein consumer-Stream benötigt, und dieser Stream gibt keine Elemente aus, sondern verbraucht sie.

Der folgende Code zeigt die Verwendung von Java 8-Streams und deren Funktion zum Durchlaufen der Liste.

package linkedList;

public class IteratingLinkedListUsingStreams {
  public static void main(String[] args) {
    LinkedList<String> list = new LinkedList<>();
    list.add("First");
    list.add("Second");
    list.stream().forEach((element) -> { System.out.println(element); });
  }
}
Rashmi Patidar avatar Rashmi Patidar avatar

Rashmi is a professional Software Developer with hands on over varied tech stack. She has been working on Java, Springboot, Microservices, Typescript, MySQL, Graphql and more. She loves to spread knowledge via her writings. She is keen taking up new things and adopt in her career.

LinkedIn

Verwandter Artikel - Java List