Iterieren durch eine verknüpfte Liste in Java
-
Iterieren über die Linked-List mit der
for
-Schleife in Java -
Durchlaufen Sie die verknüpfte Liste mithilfe der erweiterten
for
-Schleife in Java -
Durchlaufen Sie die verknüpfte Liste mit der
while
-Schleife -
Iterieren Sie die verknüpfte Liste mit der Klasse
Iterator
in Java -
Iterieren Sie die verknüpfte Liste mit Java 8
Streams
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 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