Deque-Datenstruktur in Java
Doppelt-verkettete Warteschlange
Deque, oder doppelt-verkettete Warteschlange, ermöglicht die Arbeit mit Warteschlangen sowohl am Anfang als auch am Ende.
Das Deque-Interface erweitert das Queue-Interface, daher implementiert eine Klasse wie LinkedList auch dieses Interface.
Daher wird erneut LinkedList verwendet, diesmal jedoch mit einem neuen Interface.
Die Deklaration eines Objekts vom Typ Deque unterscheidet sich nicht von der einer Queue:
Main.java
1Deque<T> deque = new LinkedList<>();
Der Hauptunterschied zeigt sich bei den Methoden dieses Interfaces.
Da ein Deque eine doppelt verkettete Warteschlange ist, das heißt, Sie können mit Elementen sowohl am Anfang als auch am Ende der Warteschlange arbeiten, sind seine Methoden speziell auf diese Eigenschaft zugeschnitten.
Methoden
Einige wichtige Methoden des Deque-Interfaces sind:
addFirst(element): Fügt ein Element am Anfang des Deques hinzu;addLast(element): Fügt ein Element am Ende des Deques hinzu.
Offensichtlich gibt es in einem Deque Methoden zum Hinzufügen am Anfang und am Ende. Die Namen dieser Methoden sind selbsterklärend. Sehen wir uns diese Methoden im Code an:
Main.java
123456789101112131415package com.example; import java.util.Deque; import java.util.LinkedList; public class Main { public static void main(String[] args) { Deque<String> deque = new LinkedList<>(); deque.addFirst("One"); deque.addLast("Two"); System.out.println("Deque: " + deque); deque.addFirst("Zero"); System.out.println("Deque after the `addFirst()` method: " + deque); } }
Wie Sie sehen können, wurde nach Verwendung der Methode addFirst() das Element am Anfang der Deque hinzugefügt. Dies unterscheidet sie von der Methode addLast().
Deque verfügt außerdem über eine reguläre Methode add(), die genauso funktioniert wie die Methode addLast(). Daher liegt die Wahl der Methode ganz bei Ihnen.
Entfernungs-Methoden
Wenn es Methoden zum Hinzufügen von Elementen am Anfang und am Ende gibt, sollten auch Methoden zum Entfernen vom Anfang und vom Ende der Deque vorhanden sein.
removeFirst(): entfernt und gibt das Element vom Anfang der Deque zurück;removeLast(): entfernt und gibt das Element vom Ende der Deque zurück.
Die Methoden addFirst() und addLast() führen die Entfernung von Elementen vom Anfang und vom Ende der Deque durch.
Sehen wir uns ein Anwendungsbeispiel im Code an:
Main.java
1234567891011121314151617package com.example; import java.util.Deque; import java.util.LinkedList; public class Main { public static void main(String[] args) { Deque<String> deque = new LinkedList<>(); deque.add("One"); deque.add("Second"); deque.add("Third"); System.out.println("Deque: " + deque); deque.removeFirst(); deque.removeLast(); System.out.println("Deque after the removal methods method: " + deque); } }
Wie Sie sehen, haben wir das erste und das letzte Element aus dem Deque entfernt, sodass nur das zweite Element übrig bleibt.
Es ist einfach und bequem, und die Methodennamen sprechen für sich selbst.
Zugriffsmethoden
Als Nächstes gehen wir zu den Methoden zum Zugreifen auf Elemente in einem Deque über.
getFirst(): gibt das Element am Anfang des Deques zurück, entfernt es jedoch nicht;getLast(): gibt das Element am Ende des Deques zurück, entfernt es jedoch nicht.
Dies ermöglicht den Zugriff auf die ersten und letzten Elemente in einer doppelt verketteten Warteschlange.
Sehen wir uns nun ein Beispiel im Code an:
Main.java
123456789101112131415161718package com.example; import java.util.Deque; import java.util.LinkedList; public class Main { public static void main(String[] args) { Deque<String> deque = new LinkedList<>(); deque.add("One"); deque.add("Second"); deque.add("Third"); System.out.println("Deque: " + deque); String first = deque.getFirst(); String last = deque.getLast(); System.out.println("The first element in the deque: " + first); System.out.println("The last element in the deque: " + last); } }
Mit den Methoden getFirst() und getLast() wurden das erste und das letzte Element aus der Deque abgerufen und neuen Variablen zugewiesen.
Im Deque-Interface gibt es außerdem die Methoden peekFirst() und peekLast(), die das Problem einer ausgelösten Ausnahme adressieren. Anstatt eine Ausnahme zu werfen und das Programm zu stoppen, geben sie null zurück, wenn die Warteschlange leer ist.
Hier ein Beispiel:
Main.java
123456789101112131415package com.example; import java.util.Deque; import java.util.LinkedList; public class Main { public static void main(String[] args) { Deque<String> deque = new LinkedList<>(); System.out.println("Deque: " + deque); String first = deque.peekFirst(); System.out.println("The first element in the deque: " + first); String last = deque.getLast(); System.out.println("The last element in the deque: " + last); } }
An diesem Beispiel wurde deutlich, dass es deutlich besser ist, die Methoden peekFirst() und peekLast() anstelle von getFirst() und getLast() zu verwenden, da sie das Programm im Fehlerfall nicht anhalten.
Allerdings sollte die NullPointerException nicht vergessen werden! Diese Ausnahme kann viele Probleme im Programm verursachen.
Es gibt auch gleichwertige alternative Methoden zu den Methoden addFirst(), addLast(), removeFirst() und removeLast(). Wir werden nicht lange darauf eingehen, da Sie bereits wissen, wie diese Methoden funktionieren, aber hier ist die Liste:
Alternative Methoden
Methoden zum Hinzufügen eines Elements zum Deque:
offerFirst(E e): fügt ein Element am Anfang des Deques hinzu, wenn möglich, und gibttruezurück. Gibtfalsezurück, wenn das Hinzufügen nicht möglich ist;offerLast(E e): fügt ein Element am Ende des Deques hinzu, wenn möglich, und gibttruezurück. Gibtfalsezurück, wenn das Hinzufügen nicht möglich ist;push(E e): fügt ein Element am Anfang des Deques hinzu, ähnlich wieaddFirst(). Beachten Sie, dasspush()auch eine Stack-Methode in derDeque-Klasse ist.
Methoden zum Entfernen eines Elements aus dem Deque:
pollFirst(): entfernt und gibt das erste Element des Deques zurück. Gibtnullzurück, wenn das Deque leer ist;pollLast(): entfernt und gibt das letzte Element des Deques zurück. Gibtnullzurück, wenn das Deque leer ist;pop(): entfernt und gibt das erste Element des Deques zurück, ähnlich wieremoveFirst().
Die Auswahl hängt von den Anforderungen des Programms ab. Sie können immer alles mit einem gewöhnlichen Array lösen, aber das wäre ziemlich aufwendig und nicht optimiert. Deshalb gibt es so viele verschiedene Datenstrukturen – um das Schreiben verschiedener Programme bequemer zu machen.
1. Wofür steht "Deque"?
2. Welches Interface in Java repräsentiert eine Deque?
3. Was ist der Zweck der Methode addFirst() in einer Deque?
4. Welche Methode wird verwendet, um das letzte Element einer Deque abzurufen, ohne es zu entfernen?
Danke für Ihr Feedback!
Fragen Sie AI
Fragen Sie AI
Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen
Großartig!
Completion Rate verbessert auf 4
Deque-Datenstruktur in Java
Swipe um das Menü anzuzeigen
Doppelt-verkettete Warteschlange
Deque, oder doppelt-verkettete Warteschlange, ermöglicht die Arbeit mit Warteschlangen sowohl am Anfang als auch am Ende.
Das Deque-Interface erweitert das Queue-Interface, daher implementiert eine Klasse wie LinkedList auch dieses Interface.
Daher wird erneut LinkedList verwendet, diesmal jedoch mit einem neuen Interface.
Die Deklaration eines Objekts vom Typ Deque unterscheidet sich nicht von der einer Queue:
Main.java
1Deque<T> deque = new LinkedList<>();
Der Hauptunterschied zeigt sich bei den Methoden dieses Interfaces.
Da ein Deque eine doppelt verkettete Warteschlange ist, das heißt, Sie können mit Elementen sowohl am Anfang als auch am Ende der Warteschlange arbeiten, sind seine Methoden speziell auf diese Eigenschaft zugeschnitten.
Methoden
Einige wichtige Methoden des Deque-Interfaces sind:
addFirst(element): Fügt ein Element am Anfang des Deques hinzu;addLast(element): Fügt ein Element am Ende des Deques hinzu.
Offensichtlich gibt es in einem Deque Methoden zum Hinzufügen am Anfang und am Ende. Die Namen dieser Methoden sind selbsterklärend. Sehen wir uns diese Methoden im Code an:
Main.java
123456789101112131415package com.example; import java.util.Deque; import java.util.LinkedList; public class Main { public static void main(String[] args) { Deque<String> deque = new LinkedList<>(); deque.addFirst("One"); deque.addLast("Two"); System.out.println("Deque: " + deque); deque.addFirst("Zero"); System.out.println("Deque after the `addFirst()` method: " + deque); } }
Wie Sie sehen können, wurde nach Verwendung der Methode addFirst() das Element am Anfang der Deque hinzugefügt. Dies unterscheidet sie von der Methode addLast().
Deque verfügt außerdem über eine reguläre Methode add(), die genauso funktioniert wie die Methode addLast(). Daher liegt die Wahl der Methode ganz bei Ihnen.
Entfernungs-Methoden
Wenn es Methoden zum Hinzufügen von Elementen am Anfang und am Ende gibt, sollten auch Methoden zum Entfernen vom Anfang und vom Ende der Deque vorhanden sein.
removeFirst(): entfernt und gibt das Element vom Anfang der Deque zurück;removeLast(): entfernt und gibt das Element vom Ende der Deque zurück.
Die Methoden addFirst() und addLast() führen die Entfernung von Elementen vom Anfang und vom Ende der Deque durch.
Sehen wir uns ein Anwendungsbeispiel im Code an:
Main.java
1234567891011121314151617package com.example; import java.util.Deque; import java.util.LinkedList; public class Main { public static void main(String[] args) { Deque<String> deque = new LinkedList<>(); deque.add("One"); deque.add("Second"); deque.add("Third"); System.out.println("Deque: " + deque); deque.removeFirst(); deque.removeLast(); System.out.println("Deque after the removal methods method: " + deque); } }
Wie Sie sehen, haben wir das erste und das letzte Element aus dem Deque entfernt, sodass nur das zweite Element übrig bleibt.
Es ist einfach und bequem, und die Methodennamen sprechen für sich selbst.
Zugriffsmethoden
Als Nächstes gehen wir zu den Methoden zum Zugreifen auf Elemente in einem Deque über.
getFirst(): gibt das Element am Anfang des Deques zurück, entfernt es jedoch nicht;getLast(): gibt das Element am Ende des Deques zurück, entfernt es jedoch nicht.
Dies ermöglicht den Zugriff auf die ersten und letzten Elemente in einer doppelt verketteten Warteschlange.
Sehen wir uns nun ein Beispiel im Code an:
Main.java
123456789101112131415161718package com.example; import java.util.Deque; import java.util.LinkedList; public class Main { public static void main(String[] args) { Deque<String> deque = new LinkedList<>(); deque.add("One"); deque.add("Second"); deque.add("Third"); System.out.println("Deque: " + deque); String first = deque.getFirst(); String last = deque.getLast(); System.out.println("The first element in the deque: " + first); System.out.println("The last element in the deque: " + last); } }
Mit den Methoden getFirst() und getLast() wurden das erste und das letzte Element aus der Deque abgerufen und neuen Variablen zugewiesen.
Im Deque-Interface gibt es außerdem die Methoden peekFirst() und peekLast(), die das Problem einer ausgelösten Ausnahme adressieren. Anstatt eine Ausnahme zu werfen und das Programm zu stoppen, geben sie null zurück, wenn die Warteschlange leer ist.
Hier ein Beispiel:
Main.java
123456789101112131415package com.example; import java.util.Deque; import java.util.LinkedList; public class Main { public static void main(String[] args) { Deque<String> deque = new LinkedList<>(); System.out.println("Deque: " + deque); String first = deque.peekFirst(); System.out.println("The first element in the deque: " + first); String last = deque.getLast(); System.out.println("The last element in the deque: " + last); } }
An diesem Beispiel wurde deutlich, dass es deutlich besser ist, die Methoden peekFirst() und peekLast() anstelle von getFirst() und getLast() zu verwenden, da sie das Programm im Fehlerfall nicht anhalten.
Allerdings sollte die NullPointerException nicht vergessen werden! Diese Ausnahme kann viele Probleme im Programm verursachen.
Es gibt auch gleichwertige alternative Methoden zu den Methoden addFirst(), addLast(), removeFirst() und removeLast(). Wir werden nicht lange darauf eingehen, da Sie bereits wissen, wie diese Methoden funktionieren, aber hier ist die Liste:
Alternative Methoden
Methoden zum Hinzufügen eines Elements zum Deque:
offerFirst(E e): fügt ein Element am Anfang des Deques hinzu, wenn möglich, und gibttruezurück. Gibtfalsezurück, wenn das Hinzufügen nicht möglich ist;offerLast(E e): fügt ein Element am Ende des Deques hinzu, wenn möglich, und gibttruezurück. Gibtfalsezurück, wenn das Hinzufügen nicht möglich ist;push(E e): fügt ein Element am Anfang des Deques hinzu, ähnlich wieaddFirst(). Beachten Sie, dasspush()auch eine Stack-Methode in derDeque-Klasse ist.
Methoden zum Entfernen eines Elements aus dem Deque:
pollFirst(): entfernt und gibt das erste Element des Deques zurück. Gibtnullzurück, wenn das Deque leer ist;pollLast(): entfernt und gibt das letzte Element des Deques zurück. Gibtnullzurück, wenn das Deque leer ist;pop(): entfernt und gibt das erste Element des Deques zurück, ähnlich wieremoveFirst().
Die Auswahl hängt von den Anforderungen des Programms ab. Sie können immer alles mit einem gewöhnlichen Array lösen, aber das wäre ziemlich aufwendig und nicht optimiert. Deshalb gibt es so viele verschiedene Datenstrukturen – um das Schreiben verschiedener Programme bequemer zu machen.
1. Wofür steht "Deque"?
2. Welches Interface in Java repräsentiert eine Deque?
3. Was ist der Zweck der Methode addFirst() in einer Deque?
4. Welche Methode wird verwendet, um das letzte Element einer Deque abzurufen, ohne es zu entfernen?
Danke für Ihr Feedback!