Java Queue-Interface meistern: Methoden, Implementierungen und Praxis
Java Queue-Interface meistern
Entdecken Sie, wie das Java Queue-Interface FIFO-Datenstrukturen antreibt, seine Kernmethoden und die gängigsten Implementierungsklassen.
Klassen, die Queue implementieren
Da Queue ein Interface ist, arbeiten Sie mit konkreten Klassen, die die eigentliche Funktionalität bereitstellen. Die drei am weitesten verbreiteten Implementierungen sind:
ArrayDeque– eine größenveränderbare doppelt endige Queue mit schnellen Add/Remove-Operationen.LinkedList– eine doppelt verkettete Liste, die sowohl Queue- als auch Deque-Operationen unterstützt.PriorityQueue– eine heap-basierte Queue, die Elemente nach natürlicher Ordnung oder einem Comparator sortiert.

Subinterfaces, die Queue erweitern
Das Queue-Interface wird von mehreren Subinterfaces erweitert, die blockierende oder doppelt endige Fähigkeiten hinzufügen:
Deque– fügt Push/Pop-Operationen an beiden Enden hinzu.BlockingQueue– führt thread-sichere Enqueue/Dequeue mit optionalen Timeouts ein.BlockingDeque– kombiniert Blocking mit doppelt endiger Semantik.

Queue-Datenstruktur in Aktion
Queues arbeiten nach dem First-In, First-Out (FIFO)-Prinzip: Elemente werden hinten angefügt und vorne entfernt.

Queue in Java verwenden
Importieren Sie das Interface mit java.util.Queue und instanziieren Sie es über eine konkrete Klasse:
import java.util.Queue; import java.util.LinkedList; import java.util.ArrayDeque; import java.util.PriorityQueue; Queue<String> animal1 = new LinkedList<>(); Queue<String> animal2 = new ArrayDeque<>(); Queue<String> animal3 = new PriorityQueue<>();
Jedes Objekt erbt den vollständigen Satz an Queue-Methoden und die generische Collection-API.
Kernmethoden von Queue
Das Interface erweitert Collection, daher enthält es alle dessen Methoden. Die am häufigsten verwendeten queue-spezifischen Operationen sind:
- add(E e) – fügt das Element ein; wirft Exception bei Fehlschlag.
- offer(E e) – fügt das Element ein; gibt
falsebei Fehlschlag zurück ohne Exception. - element() – ruft das Head-Element ab ohne zu entfernen; wirft Exception falls leer.
- peek() – ruft das Head-Element ab ohne zu entfernen; gibt
nullfalls leer zurück. - remove() – entfernt und gibt das Head-Element zurück; wirft Exception falls leer.
- poll() – entfernt und gibt das Head-Element zurück; gibt
nullfalls leer zurück.
LinkedList-Implementierungsbeispiel
import java.util.Queue; import java.util.LinkedList; public class Main { public static void main(String[] args) { Queue<Integer> numbers = new LinkedList<>(); numbers.offer(1); numbers.offer(2); numbers.offer(3); System.out.println("Queue: " + numbers); int accessed = numbers.peek(); System.out.println("Accessed Element: " + accessed); int removed = numbers.poll(); System.out.println("Removed Element: " + removed); System.out.println("Updated Queue: " + numbers); } }
Ausgabe
Queue: [1, 2, 3] Accessed Element: 1 Removed Element: 1 Updated Queue: [2, 3]
Für tiefere Einblicke siehe Java LinkedList.
PriorityQueue-Implementierungsbeispiel
import java.util.Queue; import java.util.PriorityQueue; public class Main { public static void main(String[] args) { Queue<Integer> numbers = new PriorityQueue<>(); numbers.offer(5); numbers.offer(1); numbers.offer(2); System.out.println("Queue: " + numbers); int accessed = numbers.peek(); System.out.println("Accessed Element: " + accessed); int removed = numbers.poll(); System.out.println("Removed Element: " + removed); System.out.println("Updated Queue: " + numbers); } }
Ausgabe
Queue: [1, 5, 2] Accessed Element: 1 Removed Element: 1 Updated Queue: [2, 5]
Für tiefere Einblicke siehe Java PriorityQueue.
Bleiben Sie dran für unsere kommenden Tutorials, die die Queue-Subinterfaces – Deque, BlockingQueue und BlockingDeque – und deren Einsatz in realen Szenarien erkunden.
Java
- C#-Interfaces meistern: Definition, Implementierung und praktische Anwendungsfälle
- Java Operatoren meistern: Typen, Syntax und praktische Beispiele
- Javas super-Schlüsselwort meistern: Fortgeschrittene Nutzung & praktische Beispiele
- Java-Schnittstellen meistern: Konzepte, Implementierung und Best Practices
- Java Try-With-Resources meistern: Automatisches Ressourcenmanagement erklärt
- Java Annotations erklärt: Typen, Platzierung und praktische Beispiele
- Java NavigableSet Interface meistern: Navigation, Sortierung und praktische Beispiele
- Java Lambda Expressions meistern: Von Grundlagen bis Stream API
- Java Interfaces verstehen: Definitionen, Verwendung und Best Practices
- Java 9 Private Interface Methods: Bessere Kapselung & Code-Wiederverwendung