Java Deque-interface beheersen: Kenmerken, methoden en praktische voorbeelden
Java Deque-interface
Ontdek hoe Java's Deque-interface een veelzijdige dubbelgeëindigde wachtrij levert, en leer hoe je de krachtige methoden in echte code benut.
Hoe Deque werkt
In tegenstelling tot een conventionele wachtrij, die alleen aan de achterkant enqueued en aan de voorkant dequeued, laat een Deque (dubbelgeëindigde wachtrij) toe om elementen aan beide uiteinden toe te voegen en te verwijderen. Deze flexibiliteit maakt het ideaal voor LIFO, FIFO en complexere data-afhandelingspatronen.

Klassen die Deque implementeren
Om met een Deque te werken, kies een van de volgende concrete implementaties:
- ArrayDeque – een vergrootbaar array dat snelle, niet-gesynchroniseerde toegang biedt.
- LinkedList – een dubbel gelinkte lijst die null-elementen ondersteunt en robuuste insertieprestaties levert.

Deque in je code gebruiken
Eerst de interface importeren:
import java.util.Deque;
Dan een concrete klasse instantiëren:
// Array-implementatie Deque<String> animal1 = new ArrayDeque<>(); // LinkedList-implementatie Deque<String> animal2 = new LinkedList<>();
Deze objecten blootleggen nu alle Deque-operaties.
Belangrijkste Deque-methoden
Omdat Deque Queue extends, erft het alle wachtrijmethoden. Daarnaast biedt het gespecialiseerde operaties voor beide uiteinden:
- addFirst(e) – Voegt
eaan de front in, gooit exception als vol. - addLast(e) – Voegt
eaan de tail toe, gooit exception als vol. - offerFirst(e) – Probeert in te voegen aan de front, retourneert
falseals vol. - offerLast(e) – Probeert toe te voegen aan de tail, retourneert
falseals vol. - getFirst() / getLast() – Haalt eerste/laatste element op, gooit exception als leeg.
- peekFirst() / peekLast() – Haalt eerste/laatste element op, retourneert
nullals leeg. - removeFirst() / removeLast() – Verwijdert en retourneert eerste/laatste element, gooit exception als leeg.
- pollFirst() / pollLast() – Verwijdert en retourneert eerste/laatste element, retourneert
nullals leeg.
Deque als Stack
De legacy Stack-klasse is gesynchroniseerd en minder efficiënt. Deque biedt een moderne, niet-gesynchroniseerde alternatief:
push(e)– Voegteaan de front toe.pop()– Verwijdert en retourneert het front-element.peek()– Haalt het front-element op zonder verwijdering.
Praktisch voorbeeld met ArrayDeque
import java.util.Deque; import java.util.ArrayDeque; class Main { public static void main(String[] args) { Deque<Integer> numbers = new ArrayDeque<>(); // Deque vullen numbers.offer(1); // tail numbers.offerLast(2); // tail numbers.offerFirst(3); // head System.out.println("Deque: " + numbers); // Bekijken aan beide uiteinden System.out.println("Eerste element: " + numbers.peekFirst()); System.out.println("Laatste element: " + numbers.peekLast()); // Elementen verwijderen System.out.println("Verwijderd eerste element: " + numbers.pollFirst()); System.out.println("Verwijderd laatste element: " + numbers.pollLast()); System.out.println("Bijgewerkte Deque: " + numbers); } }
Output
Deque: [3, 1, 2] Eerste element: 3 Laatste element: 2 Verwijderd eerste element: 3 Verwijderd laatste element: 2 Bijgewerkte Deque: [1]
Voor diepere inzichten, verken de officiële Java ArrayDeque-documentatie.
Java
- C#-interfaces onder de knie: definitie, implementatie en praktische use cases
- C# Interfaces Beheersen: Contracten voor Robuust Objectgeoriënteerd Programmeren
- Java-operators beheersen: typen, syntax en praktische voorbeelden
- Java interfaces meesteren: concepten, implementatie en best practices
- Java Try-with-resources meesteren: automatische resource management uitgelegd
- Java Annotaties uitgelegd: typen, plaatsing en praktische voorbeelden
- Java NavigableSet interface: Navigatie, sortering en praktische voorbeelden
- Java Lambda-expressies: Van basis tot Stream API
- Interface vs Abstracte Klasse in Java: De Juiste Abstractie Kiezen
- Java Interfaces begrijpen: Definities, Gebruik en Best Practices
- Java 9 Private Interface Methods: Encapsulatie & herbruik verbeteren