deque java deque implementation
Dieses Tutorial enthält eine detaillierte Erläuterung von Deque oder 'Double-Ended Queue' in Java. Sie erfahren mehr über Deque Interface, API-Methoden, Implementierung usw.:
Die Deque oder 'Double-Ended Queue' in Java ist eine Datenstruktur, in die wir Elemente an beiden Enden einfügen oder löschen können. Die Deque ist eine Java-Schnittstelle, die zum Paket java.util gehört, und implementiert die Schnittstelle java.queue.
Wir können deque als Stack-Struktur (Last In, First Out) oder als Warteschlange (First-In-First-Out) implementieren. Deque ist schneller als Stack und / oder LinkedList. Deque wird als 'Deck' wie im 'Kartenspiel' ausgesprochen.
=> Hier finden Sie A-Z der Java-Schulungsanleitungen.
Was du lernen wirst:
Bei etwa Java
Eine typische Deque-Sammlung sieht wie folgt aus:
bester kostenloser youtube downloader für pc
Deque wird hauptsächlich zum Implementieren von Stapel-, Warteschlangen- oder Listendatenstrukturen verwendet. Es kann auch zum Implementieren von Prioritätswarteschlangen verwendet werden. Die Funktionen zum Rückgängigmachen oder Verlauf, die hauptsächlich in den Webbrowsern vorhanden sind, können mithilfe von Deques implementiert werden.
Java Deque-Schnittstelle
Das folgende Diagramm zeigt die Hierarchie für die doppelendige Warteschlange oder Deque. Wie im folgenden Diagramm gezeigt, erstreckt sich die Deque-Schnittstelle auf die Queue-Schnittstelle, die wiederum die Collection-Schnittstelle erweitert.
Um eine Deque-Schnittstelle in unserem Programm zu verwenden, müssen wir das Paket mit der Deque-Funktionalität mithilfe einer Importanweisung wie unten gezeigt importieren.
import java.util.deque;
oder
import java.util.*;
Da die Deque eine Schnittstelle ist, benötigen wir konkrete Klassen, um die Funktionalität der Deque-Schnittstelle zu implementieren.
Die beiden folgenden Klassen implementieren die Deque-Schnittstelle.
- ArrayDeque
- LinkedList
Daher können wir mit diesen beiden Klassen Deque-Objekte erstellen, wie unten gezeigt:
Deque numdeque = new ArrayDeque (); Deque strDeque = new LinkedList ();
Sobald die oben genannten Deque-Objekte erfolgreich erstellt wurden, können sie die Funktionalität der Deque-Schnittstelle nutzen.
Im Folgenden sind einige wichtige Punkte aufgeführt, die bei deque zu beachten sind:
- Die Deque-Schnittstelle unterstützt anpassbare Arrays, die nach Bedarf erweitert werden können.
- Array-Deques erlauben keine Verwendung von Nullwerten.
- Deque unterstützt nicht den gleichzeitigen Zugriff von mehr als einem Thread.
- Deque ist nur dann threadsicher, wenn eine externe Synchronisierung vorgesehen ist.
ArrayDeque In Java
ArrayDeque gehört zum Paket java.util. Es implementiert die Deque-Schnittstelle. Intern verwendet die ArrayDeque-Klasse ein dynamisch anpassbares Array, das mit zunehmender Anzahl von Elementen wächst.
Das folgende Diagramm zeigt die Hierarchie für die ArrayDeque-Klasse:
Wie im Diagramm gezeigt, erbt die ArrayDeque-Klasse die AbstractCollection-Klasse und implementiert die Deque-Schnittstelle.
wie man einen ddos-angriff auf eine website macht
Wir können ein Deque-Objekt mit der ArrayDeque-Klasse wie folgt erstellen:
Deque deque_obj = new ArrayDeque ();
und Beispiel
Das folgende Java-Programm zeigt ein einfaches Beispiel, um die Deque besser zu verstehen. Hier haben wir die ArrayDeque-Klasse verwendet, um die Deque-Schnittstelle zu instanziieren. Wir haben dem deque-Objekt gerade einige Elemente hinzugefügt und sie dann mit einer forEach-Schleife gedruckt.
import java.util.*; public class Main { public static void main(String() args) { //Creat a Deque and add elements Deque cities_deque = new ArrayDeque(); cities_deque.add('Delhi'); cities_deque.add('Mumbai'); cities_deque.add('Bangaluru'); System.out.println('Deque Contents:'); //Traverse the Deque for (String str : cities_deque) { System.out.print(str + ' '); } } }
Ausgabe:
Die Java-API UND METHODEN
Da die Deque-Schnittstelle eine Warteschlangenschnittstelle implementiert, unterstützt sie alle Methoden der Warteschlangenschnittstelle. Außerdem bietet die Deque-Schnittstelle die folgenden Methoden, mit denen verschiedene Operationen mit dem Deque-Objekt ausgeführt werden können.
Fassen wir diese Methoden in der folgenden Tabelle zusammen.
Methode | Methodenprototyp | Beschreibung |
---|---|---|
getFirst | E getFirst () | Rufen Sie das erste Element der Deque ab, ohne es zu entfernen. |
hinzufügen | Boolesches Addieren (E e) | Fügt das gegebene Element e in die Deque (am Ende) ein, ohne die Kapazitätsbeschränkungen zu verletzen, und gibt bei Erfolg true zurück. Löst eine IllegalStateException aus, wenn in der Deque kein Speicherplatz verfügbar ist. |
addFirst | void addFirst (E e) | Fügt das angegebene Element e an die Vorderseite der Warteschlange hinzu, ohne die Kapazitätsbeschränkungen zu verletzen. |
addLast | void addLast (E e) | Fügt dem letzten Teil der Deque das Element e hinzu, ohne die Kapazitätsbeschränkungen zu verletzen. |
enthält | Boolescher Wert enthält (Objekt o) | Überprüft, ob die Deque das angegebene Element o enthält. Gibt true zurück, wenn ja. |
absteigender Iterator | Iterator absteigendIterator () | Diese Methode gibt den Iterator in umgekehrter Reihenfolge für die Deque zurück. |
Element | E Element () | Gibt das erste Element oder den ersten Kopf der Deque zurück. Beachten Sie, dass das Element nicht gelöscht wird. |
getLast | E getLast () | Ruft das letzte Element der Deque ab, ohne es zu entfernen. |
Iterator | Iterator iterator () | Gibt einen Standarditerator über die Elemente der Deque zurück. |
Angebot | Boolesches Angebot (E e) | Fügt der Deque (als Schwanz) das angegebene Element e hinzu, ohne die Kapazitätsbeschränkungen zu verletzen. Gibt bei Erfolg true und bei Misserfolg false zurück. |
Angebot zuerst | boolesches AngebotFirst (E e) | Fügen Sie das angegebene Element e an der Vorderseite der Deque ein, ohne die Kapazitätsbeschränkungen zu verletzen. |
AngebotLetzte | boolesches AngebotLetzt (E e) | Fügen Sie das angegebene Element e am Ende der Deque ein, ohne die Kapazitätsbeschränkungen zu verletzen. |
spähen | E peek () | Gibt den Kopf der Deque (erstes Element) oder null zurück, wenn eine Warteschlange leer ist. ** löscht den Kopf nicht |
peekFirst | E peekFirst () | Gibt das erste Element in der Deque zurück, ohne es zu löschen. Gibt null zurück, wenn die Deque leer ist. |
peekLast | E peekLast () | Ruft das letzte Element in der Deque ab, ohne es zu entfernen. Gibt null zurück, wenn die Deque leer ist. |
Umfrage | E Umfrage () | Löscht und gibt den Kopf der Deque zurück. Gibt null zurück, wenn die Deque leer ist. |
pollFirst | E pollFirst () | Gibt das erste Element der Deque zurück und entfernt es. Gibt null zurück, wenn die Deque leer ist. |
pollLast | E pollLast () | Gibt das letzte Element der Deque zurück und entfernt es. Gibt null zurück, wenn die Deque leer ist. |
Pop | E pop () | Pop das Element aus dem Stapel, der mit deque dargestellt wird. |
drücken | Leerenschub (E e) | Schieben Sie das angegebene Element e mit deque auf den dargestellten Stapel, ohne die Kapazitätsbeschränkungen zu verletzen. Gibt bei Erfolg oder IllegalStateException true zurück, wenn auf deque kein Speicherplatz verfügbar ist. |
entfernen | E entferne () | Entfernen Sie den Kopf der Deque und bringen Sie ihn zurück. |
entfernen | boolean remove (Objekt o) | Entfernen Sie das erste Vorkommen des angegebenen Elements o aus der Deque. |
removeFirst | E removeFirst () | Entfernen Sie das erste Element der Deque und geben Sie es zurück. |
removeFirstOccurrence | boolean removeFirstOccurrence (Objekt o) | Entfernt das erste Auftreten des angegebenen Elements o aus der Deque. |
removeLast | E removeLast () | Ruft das letzte Element in der Deque ab und löscht es. |
removeLastOccurrence | boolean removeLastOccurrence (Objekt o) | Löscht das letzte Vorkommen eines bestimmten Elements o aus der Deque. |
Größe | int size () | Gibt die Größe oder Anzahl der Elemente in der Deque zurück. |
Und Implementierung in Java
Lassen Sie uns nun ein Java-Programm implementieren, um einige der oben diskutierten Haupt-Deque-Methoden zu demonstrieren.
In diesem Programm verwenden wir eine Deque vom Typ String und fügen dieser Deque dann Elemente hinzu, indem wir verschiedene Methoden wie add, addFirst, addLast, Push, Offer, OfferFirst usw. verwenden. Anschließend zeigen wir die Deque an. Als nächstes definieren wir die Standard- und Umkehriteratoren für die Deque und durchlaufen die Deque, um die Elemente zu drucken.
Wir verwenden auch andere Methoden wie enthält, Pop, Push, Peek, Poll, Entfernen usw.
import java.util.*; public class Main { public static void main(String() args) { //Declare Deque object Deque deque = new LinkedList(); // add elements to the queue using various methods deque.add('One'); //add () deque.addFirst('Two'); //addFirst () deque.addLast('Three'); //addLast () deque.push('Four'); //push () deque.offer('Five'); //offer () deque.offerFirst('Six'); //offerFirst () deque.offerLast('Seven'); //offerLast () System.out.println('Initial Deque:'); System.out.print(deque + ' '); // Iterate using standard iterator System.out.println('
Deque contents using Standard Iterator:'); Iterator iterator = deque.iterator(); while (iterator.hasNext()) System.out.print(' ' + iterator.next()); // Iterate using Reverse order iterator Iterator reverse = deque.descendingIterator(); System.out.println('
Deque contents using Reverse Iterator:'); while (reverse.hasNext()) System.out.print(' ' + reverse.next()); // Peek () method System.out.println('
Deque Peek:' + deque.peek()); System.out.println('
Deque,After peek:' + deque); // Pop () method System.out.println('
Deque Pop:' + deque.pop()); System.out.println('
Deque,After pop:' + deque); // contains () method System.out.println('
Deque Contains Three: ' + deque.contains('Three')); deque.removeFirst(); //removeFirst () deque.removeLast(); //removeLast () System.out.println('
Deque, after removing ' + 'first and last elements: ' + deque); } }
Ausgabe:
Häufig gestellte Fragen
F # 1) Ist Deque threadsicheres Java?
Antworten: ArrayDeque ist nicht threadsicher. Die BlockingDeque-Schnittstelle in der Klasse java.util.concurrent repräsentiert jedoch die Deque. Diese Deque ist fadensicher.
Q # 2) Warum ist Deque schneller als Stack?
Antworten: Die ArrayDeque-Schnittstelle, die die Deque-Schnittstelle implementiert, ist speichereffizient, da sie nicht den vorherigen oder nächsten Knoten verfolgen muss. Es ist auch eine skalierbare Implementierung. Somit ist deque schneller als der Stapel.
Q # 3) Ist Deque ein Stapel?
Antworten: Eine Deque ist eine Warteschlange mit zwei Enden. Es erlaubt LIFO-Verhalten und kann daher als Stapel implementiert werden, obwohl es kein Stapel ist.
Q # 4) Wo wird Deque eingesetzt?
Antworten: Eine Deque wird hauptsächlich verwendet, um Funktionen wie Rückgängig und Verlauf zu implementieren.
F # 5) Ist Deque kreisförmig?
Antworten: Ja, Deque ist kreisförmig.
Fazit
Damit ist unser Tutorial zur Deque-Oberfläche in Java abgeschlossen. Die Deque-Schnittstelle wird durch eine Deque-Datenstruktur implementiert, bei der es sich um eine Sammlung handelt, die Elemente an beiden Enden einfügen und löschen kann.
Die zwei Klassen, d. H. ArrayDeque und LinkedList, implementieren die Deque-Schnittstelle. Wir können diese Klassen verwenden, um die Funktionalität der Deque-Schnittstelle zu implementieren.
=> Besuchen Sie hier für die exklusive Java Training Tutorial-Reihe.
Literatur-Empfehlungen
- Double Ended Queue (Deque) in C ++ mit Beispielen
- Java Queue - Warteschlangenmethoden, Warteschlangenimplementierung mit Beispielen
- Java Priority Queue Tutorial - Implementierung und Beispiele
- Datenstruktur der Prioritätswarteschlange in C ++ mit Abbildung
- Warteschlangendatenstruktur in C ++ mit Illustration
- C ++ Circular Queue-Datenstruktur: Implementierung und Anwendungen
- JAVA-Tutorial für Anfänger: Über 100 praktische Java-Video-Tutorials
- Prioritätswarteschlange In STL