Java LinkedList poll()-Methode
poll()Die Methode ist in JavaLinkedListeine sehr nützliche Methode, die von der Klasse bereitgestellt wird und dazu dient, das erste Element (Kopfelement) der Liste abzurufen und zu entfernen. Diese Methode gehört zuQueueTeil der Schnittstelle,LinkedListimplementiert diese Schnittstelle, sodass sie als Warteschlange verwendet werden kann.
Methodensyntax:
public E poll()
Rückgabewert:
- Wenn die Liste nicht leer ist, gibt sie das erste Element der Liste zurück
- Wenn die Liste leer ist, gibt sie zurück
null
Methodeneigenschaften
Vergleich mit ähnlichen Methoden
In JavasLinkedListEs gibt mehrere ähnliche Methoden, die verwendet werden können, um das Kopfelement abzurufen und zu entfernen:
| Methode | Verhaltensbeschreibung | Verhalten bei leerer Liste |
|---|---|---|
| poll() | Ruft das Kopfelement ab und entfernt es | Gibt null zurück |
| remove() | Ruft das Kopfelement ab und entfernt es | Löst NoSuchElementException aus |
| pop() | Ruft das Kopfelement ab und entfernt es (Stack-Operation) | Löst NoSuchElementException aus |
| pollFirst() | Ruft das erste Element ab und entfernt es (wie poll()) | Gibt null zurück |
Zeitkomplexität
poll()Die Zeitkomplexität der Methode ist O(1), weil sie nur das erste Element der Liste entfernt und zurückgibt, ohne die gesamte Liste zu durchlaufen.
Anwendungsbeispiele
Grundlegende Verwendung
Beispiel
public class PollExample {
public static void main(String[] args) {
// Erstelle eine LinkedList
LinkedList<String> fruits = new LinkedList<>();
// Elemente hinzufügen
fruits.add("Apfel");
fruits.add("Banane");
fruits.add("Cherry");
System.out.println("Ursprüngliche Liste: " + fruits); // Ausgabe: [Apple, Banana, Cherry]
// Verwende die poll()-Methode
String firstFruit = fruits.poll();
System.out.println("Entferntes Element: " + firstFruit); // Ausgabe: Apple
System.out.println("Aktualisierte Liste: " + fruits); // Ausgabe: [Banana, Cherry]
}
}
Umgang mit leeren Listen
Beispiel
public class EmptyListExample {
public static void main(String[] args) {
LinkedList<String> emptyList = new LinkedList<>();
// Verwende poll() bei einer leeren Liste
String result = emptyList.poll();
System.out.println("Ergebnis: " + result); // Ausgabe: null
}
}
Verwendung in Warteschlangenoperationen
Beispiel
import java.util.Queue;
public class QueueExample {
public static void main(String[] args) {
// LinkedList als Warteschlange verwenden
Queue<Integer> queue = new LinkedList<>();
// Einfügeoperation
queue.offer(10);
queue.offer(20);
queue.offer(30);
System.out.println("Warteschlangeninhalt: " + queue); // Ausgabe: [10, 20, 30]
// Dequeue-Operation
while (!queue.isEmpty()) {
int num = queue.poll();
System.out.println("Verarbeitet: " + num);
}
System.out.println("Endgültiger Warteschlangenzustand: " + queue); // Ausgabe: []
}
}
Praktische Anwendungsszenarien
poll()Die Methode ist besonders nützlich in den folgenden Szenarien:
- Warteschlangenverarbeitung: Bei Verwendung
LinkedListals Warteschlange,poll()ist die Standard-Dequeue-Operation. - Aufgabenplanung: Eine Aufgabenliste abarbeiten, wobei jeweils die erste Aufgabe zur Ausführung entnommen wird.
- Breitensuche: In Algorithmen zur Graph- oder Baumdurchquerung wird dies verwendet, um den nächsten zu verarbeitenden Knoten aus der Warteschlange zu entnehmen.
- Nachrichtenverarbeitung: In einer Nachrichtenwarteschlange die nächste Nachricht entnehmen und verarbeiten.
Hinweise
- Umgang mit leeren Listen: Im Gegensatz zur
remove()Methode,poll()löst keine Ausnahme aus, wenn die Liste leer ist, sondern gibt stattdessen zurücknull. Dadurch ist es besser geeignet, wenn Sie sich nicht sicher sind, ob die Liste leer ist. - Generische Typen: Stellen Sie sicher, dass der Rückgabewerttyp korrekt behandelt wird, um
ClassCastException。 - Nebenläufige Umgebung:
LinkedListist nicht threadsicher; wenn es in einer Multithread-Umgebung verwendet wird, müssen Synchronisationsprobleme berücksichtigt werden.
Durch die Beherrschung derpoll()-Methode können Sie effektiver nutzenLinkedListals Warteschlange und schreiben Sie saubereren, robusteren Java-Code.
Java LinkedList