Java Deque-Interface meistern: Funktionen, Methoden und Praxisbeispiele
Java Deque-Interface
Entdecken Sie, wie Javas Deque-Interface eine vielseitige doppelt endige Queue bereitstellt und wie Sie seine leistungsstarken Methoden im echten Code nutzen.
Wie Deque funktioniert
Im Gegensatz zu einer herkömmlichen Queue, die nur hinten enqueued und vorne dequeued, ermöglicht ein Deque (doppelt endige Queue) das Hinzufügen und Entfernen von Elementen an beiden Enden. Diese Flexibilität macht es ideal für LIFO, FIFO und komplexere Datenverarbeitungsmuster.

Klassen, die Deque implementieren
Um mit einem Deque zu arbeiten, wählen Sie eine der folgenden konkreten Implementierungen:
- ArrayDeque – ein größenveränderbares Array, das schnellen, nicht-synchronisierten Zugriff bietet.
- LinkedList – eine doppelt verkettete Liste, die null-Elemente unterstützt und robuste Einfüge-Performance bietet.

Deque in Ihrem Code verwenden
Zuerst das Interface importieren:
import java.util.Deque;
Dann eine konkrete Klasse instanziieren:
// Array-Implementierung Deque<String> animal1 = new ArrayDeque<>(); // LinkedList-Implementierung Deque<String> animal2 = new LinkedList<>();
Diese Objekte stellen nun alle Deque-Operationen bereit.
Wichtige Deque-Methoden
Da Deque Queue erweitert, erbt es alle Queue-Methoden. Zusätzlich bietet es spezialisierte Operationen für beide Enden:
- addFirst(e) – Fügt
evorne ein, wirft Exception falls Deque voll. - addLast(e) – Fügt
ehinten an, wirft Exception falls voll. - offerFirst(e) – Versucht Einfügen vorne, gibt
falsezurück falls voll. - offerLast(e) – Versucht Anhängen hinten, gibt
falsezurück falls voll. - getFirst() / getLast() – Ruft erstes/letztes Element ab, wirft Exception falls leer.
- peekFirst() / peekLast() – Ruft erstes/letztes Element ab, gibt
nullfalls leer. - removeFirst() / removeLast() – Entfernt und gibt erstes/letztes Element zurück, wirft Exception falls leer.
- pollFirst() / pollLast() – Entfernt und gibt erstes/letztes Element zurück, gibt
nullfalls leer.
Deque als Stack
Die Legacy-Stack-Klasse ist synchronisiert und weniger effizient. Deque bietet eine moderne, nicht-synchronisierte Alternative:
push(e)– Fügtevorne hinzu.pop()– Entfernt und gibt das vordere Element zurück.peek()– Ruft das vordere Element ab ohne Entfernung.
Praxisbeispiel mit ArrayDeque
import java.util.Deque; import java.util.ArrayDeque; class Main { public static void main(String[] args) { Deque<Integer> numbers = new ArrayDeque<>(); // Deque befüllen numbers.offer(1); // tail numbers.offerLast(2); // tail numbers.offerFirst(3); // head System.out.println("Deque: " + numbers); // An beiden Enden peek System.out.println("First Element: " + numbers.peekFirst()); System.out.println("Last Element: " + numbers.peekLast()); // Elemente entfernen System.out.println("Removed First Element: " + numbers.pollFirst()); System.out.println("Removed Last Element: " + numbers.pollLast()); System.out.println("Updated Deque: " + numbers); } }
Ausgabe
Deque: [3, 1, 2] First Element: 3 Last Element: 2 Removed First Element: 3 Removed Last Element: 2 Updated Deque: [1]
Für tiefere Einblicke erkunden Sie die offizielle Java ArrayDeque Dokumentation.
Java
- C#-Interfaces meistern: Definition, Implementierung und praktische Anwendungsfälle
- Java Operatoren meistern: Typen, Syntax und 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
- Interface vs. Abstrakte Klasse in Java: Die richtige Abstraktion wählen
- Java Interfaces verstehen: Definitionen, Verwendung und Best Practices
- Java 9 Private Interface Methods: Bessere Kapselung & Code-Wiederverwendung
- C# Interfaces: Verträge für robuste objektorientierte Programmierung