Java Deque

Java Deque
Eine Warteschlange im Computing ist eine FIFO-Listenstruktur (First-In-In-In-In-Out-Out). Dies bedeutet, ein neues Element hinzuzufügen. Das Element ist auf der Rückseite der Liste eingesetzt. und um ein Element zu entfernen, ist das Element von der Vorderseite der Liste dequed. Das vordere Element kann auch angeregt werden, was bedeutet, es zu lesen, aber nicht zu entfernen.

Ein Stapel im Computer ist eine Last-in_First-Out (LIFO) -Listen-Datenstruktur. Dies bedeutet, ein neues Element hinzuzufügen, das Element wird an die Vorderseite der Liste gedrückt. und um ein Element zu entfernen, steigt das Element von der Vorderseite der Liste heraus. Das vordere Element kann auch angeregt werden, was bedeutet, es zu lesen, aber nicht zu entfernen.

Der Name "Deque" ist die Kurzform für "Doppeltege-Warteschlange", ausgesprochen "Deck". Das Deque ist ein FIFO- und eine LIFO -Listendatenstruktur in Java. Nun, auch in Java ist das Deque eine Schnittstelle, aus der Klassen implementiert werden können. Java hat bereits die folgenden Klassen implementiert: Arraydeque, ConcurrentLinkedDeque, Linked BlockingDeque, LinkedList. Die Arraydeque -Klasse wurde ausgewählt, um in diesem Artikel untersucht zu werden.

Im Folgenden finden Sie Java Arraydeque entsprechende Methoden für die Warteschlange:

Warteschlange Arraydeque
Enqueue hinzufügen
Dequeue entfernen
spähen spähen

Im Folgenden finden Sie Java Arraydeque entsprechende Methoden für Stack:

Stapel Arraydeque
drücken drücken
Pop Pop
spähen spähen

Hinweis: Die Peek () -Methode ist für beide Verhaltensweisen gleich. Außerdem sind remove () und pop () sehr ähnlich; Sie werden unten erklärt.

Bau einer Arraydeque

Die Arraydeque -Klasse befindet sich in der Java.Util.* Paket, das importiert werden muss. Es hat drei Konstruktoren, von denen zwei hier erklärt werden.

öffentliche Arraydeque ()
Dadurch wird ein leeres Deque erstellt, wie das folgende Codesegment zeigt:

Arraydeque DQ = New Arraydeque();
DQ.add ('f'); DQ.add ('g'); DQ.add ('h'); DQ.add ('i'); DQ.add ('j');

Fünf Elemente wurden hinzugefügt. Der Name des Deque hier ist, DQ.

Öffentliche Arraydeque (Sammlung C)
Dieser überladene Konstruktor erzeugt ein Deque aus einem anderen Deque. Das folgende Codesegment zeigt dies:

Arraydeque DQ = New Arraydeque();
DQ.add ('f'); DQ.add ('g'); DQ.add ('h'); DQ.add ('i'); DQ.add ('j');
Arraydeque DQ1 = Neuarraydeque(DQ);

DQ1 wurde aus DQ erstellt.

Methoden der Arraydeque -Klasse

öffentlicher Boolescher Add (e e)
Dies ist das Äquivalent von Enqueue. Es fügt ein Element am Ende des Deque hinzu. Das folgende Programm zeigt dies:

Java importieren.Util.*;
öffentliche Klasse Theclass
public static void main (String [] args)
Arraydeque DQ = New Arraydeque();
DQ.add ('f'); DQ.add ('g'); DQ.add ('h'); DQ.add ('i'); DQ.add ('j');

öffentliche int size ()
Dies gibt die Größe (Länge) des Deque zurück. Das folgende Programm zeigt dies:

Java importieren.Util.*;
öffentliche Klasse Theclass
public static void main (String [] args)
Arraydeque DQ = New Arraydeque();
DQ.add ('f'); DQ.add ('g'); DQ.add ('h'); DQ.add ('i'); DQ.add ('j');
int sz = dq.Größe();
System.aus.println (SZ);

Der Ausgang ist 5.

öffentlich e entfernen ()
Dies ist das Äquivalent von Dequeue. Es entfernt ein Element von der Vorderseite der Liste. Das folgende Programm zeigt dies:

Java importieren.Util.*;
öffentliche Klasse Theclass
public static void main (String [] args)
Arraydeque DQ = New Arraydeque();
DQ.add ('f'); DQ.add ('g'); DQ.add ('h'); DQ.add ('i'); DQ.add ('j');
char ch1 = dq.entfernen(); char ch2 = dq.entfernen(); char ch3 = dq.entfernen();
char ch4 = dq.entfernen(); char ch5 = dq.entfernen();
System.aus.print (ch1); System.aus.print ("); System.aus.print (ch2); System.aus.drucken(");
System.aus.print (ch3); System.aus.print ("); System.aus.print (ch4); System.aus.drucken(");
System.aus.Druck (CH5); System.aus.drucken(");
System.aus.println ();

Die Ausgabe ist:

F g h i j

Ein FIFO -Verhalten zeigen.

öffentlich e peek ()
Dies liest das Element vor dem Deque, ohne es zu entfernen. Das folgende Programm zeigt dies:

Java importieren.Util.*;
öffentliche Klasse Theclass
public static void main (String [] args)
Arraydeque DQ = New Arraydeque();
DQ.add ('f'); DQ.add ('g'); DQ.add ('h'); DQ.add ('i'); DQ.add ('j');
char ch1 = dq.spähen(); char ch2 = dq.spähen(); char ch3 = dq.spähen();
char ch4 = dq.spähen(); char ch5 = dq.spähen();
System.aus.print (ch1); System.aus.print ("); System.aus.print (ch2); System.aus.drucken(");
System.aus.print (ch3); System.aus.print ("); System.aus.print (ch4); System.aus.drucken(");
System.aus.Druck (CH5); System.aus.drucken(");
System.aus.println ();

Die Ausgabe ist:

F f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f ab ein fest ab gefkochten)

Dies zeigt an, dass nichts entfernt wurde und das erste Element gerade fünf Mal gelesen wurde.

Öffentliche Leere (e e)
Dies fügt der Vorderseite des Deque ein Element hinzu. Das folgende Programm zeigt dies:

Java importieren.Util.*;
öffentliche Klasse Theclass
public static void main (String [] args)
Arraydeque DQ = New Arraydeque();
DQ.Push ('f'); DQ.Push ('g'); DQ.Push ('H'); DQ.Push ('I'); DQ.Push ('J');
char ch1 = dq.entfernen(); char ch2 = dq.entfernen(); char ch3 = dq.entfernen();
char ch4 = dq.entfernen(); char ch5 = dq.entfernen();
System.aus.print (ch1); System.aus.print ("); System.aus.print (ch2); System.aus.drucken(");
System.aus.print (ch3); System.aus.print ("); System.aus.print (ch4); System.aus.drucken(");
System.aus.Druck (CH5); System.aus.drucken(");
System.aus.println ();

Die Ausgabe ist:

J i h g f

Ein Lebensverhalten zeigen.

öffentlich e pop ()
Dies entfernt und gibt das erste Element des Deque zurück und gibt zurück. Das folgende Programm zeigt dies:

Java importieren.Util.*;
öffentliche Klasse Theclass
public static void main (String [] args)
Arraydeque DQ = New Arraydeque();
DQ.Push ('f'); DQ.Push ('g'); DQ.Push ('H'); DQ.Push ('I'); DQ.Push ('J');
char ch1 = dq.Pop(); char ch2 = dq.Pop(); char ch3 = dq.Pop();
char ch4 = dq.Pop(); char ch5 = dq.Pop();
System.aus.print (ch1); System.aus.print ("); System.aus.print (ch2); System.aus.drucken(");
System.aus.print (ch3); System.aus.print ("); System.aus.print (ch4); System.aus.drucken(");
System.aus.Druck (CH5); System.aus.drucken(");
System.aus.println ();

Die Ausgabe ist:

J i h g f

Ein Lebensverhalten zeigen.

Öffentliche Leere für den Verbraucher (Verbraucheraktionen)
Mit dieser Methode können Sie auf jedes Element im Deque zugreifen. Das folgende Programm druckt alle Elemente im Deque: Drucken Sie es aus:

Java importieren.Util.*;
öffentliche Klasse Theclass
public static void main (String [] args)
Arraydeque DQ = New Arraydeque();
DQ.Push ('f'); DQ.Push ('g'); DQ.Push ('H'); DQ.Push ('I'); DQ.Push ('J');
DQ.foreach ((Element) -> System.aus.print (item + ""));
System.aus.println ();

Die Ausgabe ist:

J i h g f

Element ist eine Dummy -Variable, die jedes Element im Deque darstellt. Beachten Sie, wie es verwendet wurde. Beachten Sie die Verwendung des Pfeiloperators, -> . Die Iteration wurde in umgekehrter Reihenfolge durchgeführt.

Iterator Iterator ()
Dies gibt einen Iterator zurück, der verwendet werden kann, um ein Element innerhalb des Deque zu entfernen. Diese Aktion dauert jedoch länger, als ein Element vorne oder hinten des Deque zu entfernen. Die folgende Erklärung würde den Iterator für Charaktere eines Deque zurückgeben.

Iterator ITER = DQ.Iterator ();

Wo Iter das Iteratorobjekt ist und DQ das Deque -Objekt ist.

Der Iterator hat die folgenden Methoden:

boolean hasNext (): Gibt wahr, wenn die Iteration mehr Elemente hat.

E Next (): Gibt das nächste Element in der Iteration zurück.

Standard void remove (): Entfernt aus der Liste, das letzte Element, das von diesem Iterator zurückgegeben wurde (Weiter).

Beachten Sie, dass es keine Methode gibt, um ein Element in den Deque einzufügen.

Entfernen eines Elements innerhalb von Deque

Das folgende Programm beseitigt 'H' in der Mitte der Deque -Liste: F, G, H, I, J:

Java importieren.Util.*;
öffentliche Klasse Theclass
public static void main (String [] args)
Arraydeque DQ = New Arraydeque();
DQ.Push ('f'); DQ.Push ('g'); DQ.Push ('H'); DQ.Push ('I'); DQ.Push ('J');
Iterator ITER = DQ.Iterator ();
Iter.nächste(); Iter.nächste(); Iter.nächste();
Iter.entfernen();
DQ.foreach ((Element) -> System.aus.print (item + ""));
System.aus.println ();

Die Ausgabe ist:

J i g f

Beachten Sie, dass nächstes () dreimal angerufen werden musste.

Abschluss

In Java ist das Deque sowohl eine FIFO- als auch eine LIFO -Sammlung. Deque in Java ist tatsächlich eine Schnittstelle, aus der eine Klasse implementiert werden muss, bevor der Deque verwendet werden kann. Glücklicherweise hat Java bereits die folgenden Deque -implementierten Klassen: Arraydeque, ConcurrentLinkedDeque, LinkedBlockingDeque, LinkedList. Die Operation für Arraydeque wurde oben erklärt.