Java LinkedList
Eine verknüpfte Liste ist eine häufige grundlegende Datenstruktur. Sie ist eine lineare Liste, speichert Daten jedoch nicht in linearer Reihenfolge; stattdessen speichert jeder Knoten die Adresse des nächsten Knotens.
Verknüpfte Listen können in einfach verknüpfte Listen und doppelt verknüpfte Listen unterteilt werden.
Eine einfach verknüpfte Liste enthält zwei Werte: den Wert des aktuellen Knotens und einen Verweis, der auf den nächsten Knoten zeigt.

Eine doppelt verknüpfte Liste hat drei ganzzahlige Werte: den Wert, einen Verweis auf den vorherigen Knoten und einen Verweis auf den nächsten Knoten.

Java LinkedList ähnelt ArrayList und ist ein häufig verwendeter Datencontainer.
Im Vergleich zu ArrayList ist LinkedList bei Hinzufüge- und Löschvorgängen effizienter, bei Such- und Änderungsvorgängen jedoch weniger effizient.
Verwenden Sie ArrayList in den folgenden Fällen:
- Häufiger Zugriff auf ein bestimmtes Element in der Liste.
- Nur das Hinzufügen und Löschen von Elementen am Ende der Liste.
Verwenden Sie LinkedList in den folgenden Fällen:
- Sie müssen per Schleifeniteration auf bestimmte Elemente in der Liste zugreifen.
- Wenn Elemente häufig an Positionen wie Anfang, Mitte und Ende der Liste hinzugefügt und gelöscht werden müssen.
LinkedList erbt von der Klasse AbstractSequentialList.
LinkedList implementiert die Queue-Schnittstelle und kann als Warteschlange verwendet werden.
LinkedList implementiert die List-Schnittstelle und kann listenbezogene Operationen ausführen.
LinkedList implementiert die Deque-Schnittstelle und kann als Warteschlange verwendet werden.
LinkedList implementiert die Cloneable-Schnittstelle und kann geklont werden.
LinkedList implementiert die java.io.Serializable-Schnittstelle, die Serialisierung unterstützt und die Übertragung durch Serialisierung ermöglicht.

Die Klasse LinkedList befindet sich im Paket java.util. Sie müssen sie vor der Verwendung importieren. Die Syntax lautet wie folgt:
// 引入 LinkedList 类 import java.util.LinkedList; LinkedList<E> list = new LinkedList<E>(); // 普通创建方法 或者 LinkedList<E> list = new LinkedList(Collection<? extends E> c); // 使用集合创建链表
Erstellen Sie ein einfaches LinkedList-Beispiel:
Beispiel
import java.util.LinkedList;
public class ExampleTest {
public static void main(String[] args) {
LinkedList<String> sites = new LinkedList<String>();
sites.add("Google");
sites.add("Example");
sites.add("Taobao");
sites.add("Weibo");
System.out.println(sites);
}
}
Die Ausgabe des obigen Beispiels ist:
[Google, Example, Taobao, Weibo]
In den meisten Fällen ist die Verwendung von ArrayList für den Zugriff auf zufällige Elemente in einer Liste effizienter, aber in den folgenden Fällen bietet LinkedList effizientere Methoden.
Elemente am Anfang der Liste hinzufügen:
Beispiel
import java.util.LinkedList;
public class ExampleTest {
public static void main(String[] args) {
LinkedList<String> sites = new LinkedList<String>();
sites.add("Google");
sites.add("Example");
sites.add("Taobao");
// Verwende addFirst(), um Elemente am Kopf hinzuzufügen
sites.addFirst("Wiki");
System.out.println(sites);
}
}
Die Ausgabe des obigen Beispiels ist:
[Wiki, Google, Example, Taobao]
Elemente am Ende der Liste hinzufügen:
Beispiel
import java.util.LinkedList;
public class ExampleTest {
public static void main(String[] args) {
LinkedList<String> sites = new LinkedList<String>();
sites.add("Google");
sites.add("Example");
sites.add("Taobao");
// Verwende addLast(), um Elemente am Ende hinzuzufügen
sites.addLast("Wiki");
System.out.println(sites);
}
}
Die Ausgabe des obigen Beispiels ist:
[Google, Example, Taobao, Wiki]
Elemente am Anfang der Liste entfernen:
Beispiel
import java.util.LinkedList;
public class ExampleTest {
public static void main(String[] args) {
LinkedList<String> sites = new LinkedList<String>();
sites.add("Google");
sites.add("Example");
sites.add("Taobao");
sites.add("Weibo");
// Verwende removeFirst(), um das Kopfelement zu entfernen
sites.removeFirst();
System.out.println(sites);
}
}
Die Ausgabe des obigen Beispiels ist:
[Example, Taobao, Weibo]
Elemente am Ende der Liste entfernen:
Beispiel
import java.util.LinkedList;
public class ExampleTest {
public static void main(String[] args) {
LinkedList<String> sites = new LinkedList<String>();
sites.add("Google");
sites.add("Example");
sites.add("Taobao");
sites.add("Weibo");
// Verwende removeLast(), um das letzte Element zu entfernen
sites.removeLast();
System.out.println(sites);
}
}
Die Ausgabe des obigen Beispiels ist:
[Google, Example, Taobao]
Das Element am Anfang der Liste abrufen:
Beispiel
import java.util.LinkedList;
public class ExampleTest {
public static void main(String[] args) {
LinkedList<String> sites = new LinkedList<String>();
sites.add("Google");
sites.add("Example");
sites.add("Taobao");
sites.add("Weibo");
// Verwende getFirst(), um das Kopf-Element abzurufen
System.out.println(sites.getFirst());
}
}
Die Ausgabe des obigen Beispiels ist:
Das Element am Ende der Liste abrufen:
Beispiel
import java.util.LinkedList;
public class ExampleTest {
public static void main(String[] args) {
LinkedList<String> sites = new LinkedList<String>();
sites.add("Google");
sites.add("Example");
sites.add("Taobao");
sites.add("Weibo");
// Verwende getLast(), um das letzte Element abzurufen
System.out.println(sites.getLast());
}
}
Die Ausgabe des obigen Beispiels ist:
Über Elemente iterieren
Wir können eine for-Schleife mit der Methode size() verwenden, um über die Elemente in der Liste zu iterieren:
Beispiel
import java.util.LinkedList;
public class ExampleTest {
public static void main(String[] args) {
LinkedList<String> sites = new LinkedList<String>();
sites.add("Google");
sites.add("Example");
sites.add("Taobao");
sites.add("Weibo");
for (int size = sites.size(), i = 0; i < size; i++) {
System.out.println(sites.get(i));
}
}
}
Die Methode size() wird verwendet, um die Größe der verknüpften Liste zu berechnen.
Die Ausgabe des obigen Beispiels ist:
Google Example Taobao Weibo
Du kannst auch for-each verwenden, um über Elemente zu iterieren:
Beispiel
import java.util.LinkedList;
public class ExampleTest {
public static void main(String[] args) {
LinkedList<String> sites = new LinkedList<String>();
sites.add("Google");
sites.add("Example");
sites.add("Taobao");
sites.add("Weibo");
for (String i : sites) {
System.out.println(i);
}
}
}
Die Ausgabe des obigen Beispiels ist:
Google Example Taobao Weibo
Häufige Methoden
| Methode | Beschreibung |
|---|---|
| public boolean add(E e) | Fügt ein Element am Ende der verknüpften Liste hinzu, gibt zurück, ob es erfolgreich war, true bei Erfolg, false bei Fehler. |
| public void add(int index, E element) | Fügt ein Element an der angegebenen Position ein. |
| public boolean addAll(Collection extends E> c) | Fügt alle Elemente einer Collection am Ende der verknüpften Liste hinzu, gibt zurück, ob es erfolgreich war, true bei Erfolg, false bei Fehler. |
| public boolean addAll(int index, Collection extends E> c) | Fügt alle Elemente einer Collection nach der angegebenen Position in der verknüpften Liste hinzu, gibt zurück, ob es erfolgreich war, true bei Erfolg, false bei Fehler. |
| public void addFirst(E e) | Fügt ein Element am Kopf hinzu. |
| public void addLast(E e) | Fügt ein Element am Ende hinzu. |
| public boolean offer(E e) | Fügt ein Element am Ende der verketteten Liste hinzu, gibt zurück, ob es erfolgreich war, true bei Erfolg, false bei Fehlschlag. |
| public boolean offerFirst(E e) | Fügt ein Element am Kopf ein, gibt zurück, ob es erfolgreich war, true bei Erfolg, false bei Fehlschlag. |
| public boolean offerLast(E e) | Fügt ein Element am Ende ein, gibt zurück, ob es erfolgreich war, true bei Erfolg, false bei Fehlschlag. |
| public void clear() | Leert die verkettete Liste. |
| public E removeFirst() | Entfernt das erste Element und gibt es zurück. |
| public E removeLast() | Entfernt das letzte Element und gibt es zurück. |
| public boolean remove(Object o) | Entfernt ein bestimmtes Element, gibt zurück, ob es erfolgreich war, true bei Erfolg, false bei Misserfolg. |
| public E remove(int index) | Entfernt das Element an der angegebenen Position. |
| public E poll() | Entfernt das erste Element und gibt es zurück. |
| public E remove() | Entfernt das erste Element und gibt es zurück. |
| public boolean contains(Object o)</td> | Bestimmt, ob es ein bestimmtes Element enthält. |
| public E get(int index) | Gibt das Element an der angegebenen Position zurück. |
| public E getFirst() | Gibt das erste Element zurück. |
| public E getLast() | Gibt das letzte Element zurück. |
| public int indexOf(Object o) | Findet den Index des ersten Vorkommens des angegebenen Elements von vorne nach hinten. |
| public int lastIndexOf(Object o) | Findet den Index des letzten Vorkommens des angegebenen Elements. |
| public E peek() | Gibt das erste Element zurück. |
| public E element() | Gibt das erste Element zurück. |
| public E peekFirst() | Gibt das Kopfelement zurück. |
| public E peekLast() | Gibt das Endelement zurück. |
| public E set(int index, E element) | Setzt das Element an der angegebenen Position. |
| public Object clone() | Klont diese Liste. |
|
public Iterator | Gibt einen Iterator in umgekehrter Reihenfolge zurück. |
| public int size() | Gibt die Anzahl der Elemente in der verketteten Liste zurück. |
|
public ListIterator | Gibt einen Iterator zurück, der an der angegebenen Position beginnt und bis zum Ende reicht. |
| public Object[] toArray() | Gibt ein Array zurück, das aus den Elementen der verketteten Liste besteht. |
|
public | Gibt ein Array zurück, das durch Konvertierung des Typs der Elemente der verketteten Liste erstellt wurde. |
Weitere API-Methoden können Sie hier einsehen:https://www.example.com/manual/jdk11api/java.base/java/util/LinkedList.html
Andere Erweiterungen
Java Collections Framework