Java Deque

Java Deque
Una coda nel calcolo è una struttura dei dati di primo in_first-out (FIFO). Ciò significa aggiungere un nuovo elemento, l'elemento viene tenuto sul retro dell'elenco; e per rimuovere un elemento, l'elemento viene definito dalla parte anteriore dell'elenco. L'elemento anteriore può anche essere sbirciato, il che significa leggerlo ma non rimuoverlo.

Uno stack nel calcolo è una struttura dei dati Last-In_First-Out (LIFO). Ciò significa aggiungere un nuovo elemento, l'elemento viene spinto nella parte anteriore dell'elenco; e per rimuovere un elemento, l'elemento viene visualizzato dalla parte anteriore dell'elenco. L'elemento anteriore può anche essere sbirciato, il che significa leggerlo ma non rimuoverlo.

Il nome "Deque" è la forma corta per la "coda a doppia estremità", pronunciata "mazzo". Il Deque è una struttura dati FIFO e LIFO Elenco in Java. Bene, anche in Java, il Deque è un'interfaccia da cui è possibile implementare le classi. Java ha già implementato le seguenti classi: ArrayDeque, concurrentLinkedDeque, LinkedblockingDeque, LinkedList. La classe Arraydeque è stata scelta per essere studiata in questo articolo.

Di seguito sono riportati i metodi corrispondenti Java Arraydeque per la coda:

Coda Arraydeque
accodare aggiungere
dequeue rimuovere
sbirciare sbirciare

Di seguito sono riportati i metodi corrispondenti Java Arraydeque per lo stack:

Pila Arraydeque
spingere spingere
pop pop
sbirciare sbirciare

Nota: il metodo Peek () è lo stesso per entrambi i comportamenti. Inoltre, rimuovi () e pop () sono molto simili; sono spiegati di seguito.

Costruire un Arraydeque

La classe Arraydeque è nella Java.util.* pacchetto, che deve essere importato. Ha tre costruttori, due dei quali sono spiegati qui.

Public ArrayDeque ()
Questo crea un deque vuoto, come mostra il seguente segmento di codice:

Arraydeque dq = nuovo arraydeque();
dq.Aggiungi ('f'); dq.Aggiungi ('g'); dq.Aggiungi ('H'); dq.Aggiungi ('i'); dq.Aggiungi ('j');

Sono stati aggiunti cinque elementi. Il nome del deque qui è, dq.

Public Arraydeque (collezione C)
Questo costruttore sovraccarico, crea un deque da un altro deque. Il seguente segmento di codice illustra questo:

Arraydeque dq = nuovo arraydeque();
dq.Aggiungi ('f'); dq.Aggiungi ('g'); dq.Aggiungi ('H'); dq.Aggiungi ('i'); dq.Aggiungi ('j');
Arraydeque dq1 = nuovo arraydeque(dq);

DQ1 è stato creato da DQ.

Metodi della classe Arraydeque

Public Boolean Add (e e)
Questo è l'equivalente di ACQUEUE. Aggiunge un elemento alla fine del deque. Il seguente programma illustra questo:

Importa Java.util.*;
Classe pubblica TheClass
public static void main (string [] args)
Arraydeque dq = nuovo arraydeque();
dq.Aggiungi ('f'); dq.Aggiungi ('g'); dq.Aggiungi ('H'); dq.Aggiungi ('i'); dq.Aggiungi ('j');

public int size ()
Questo restituisce la dimensione (lunghezza) del deque. Il seguente programma illustra questo:

Importa Java.util.*;
Classe pubblica TheClass
public static void main (string [] args)
Arraydeque dq = nuovo arraydeque();
dq.Aggiungi ('f'); dq.Aggiungi ('g'); dq.Aggiungi ('H'); dq.Aggiungi ('i'); dq.Aggiungi ('j');
int sz = dq.misurare();
Sistema.fuori.println (sz);

L'output è 5.

public e remove ()
Questo è l'equivalente di Dequeue. Rimuove un elemento dalla parte anteriore dell'elenco. Il seguente programma illustra questo:

Importa Java.util.*;
Classe pubblica TheClass
public static void main (string [] args)
Arraydeque dq = nuovo arraydeque();
dq.Aggiungi ('f'); dq.Aggiungi ('g'); dq.Aggiungi ('H'); dq.Aggiungi ('i'); dq.Aggiungi ('j');
char ch1 = dq.rimuovere(); char ch2 = dq.rimuovere(); char ch3 = dq.rimuovere();
char ch4 = dq.rimuovere(); char ch5 = dq.rimuovere();
Sistema.fuori.stampa (CH1); Sistema.fuori.print ("); sistema.fuori.stampa (CH2); Sistema.fuori.stampa(");
Sistema.fuori.stampa (CH3); Sistema.fuori.print ("); sistema.fuori.stampa (CH4); Sistema.fuori.stampa(");
Sistema.fuori.stampa (CH5); Sistema.fuori.stampa(");
Sistema.fuori.println ();

L'output è:

F g h i j

mostrando un comportamento FIFO.

public E Peek ()
Questo legge l'elemento nella parte anteriore del deque senza rimuoverlo. Il seguente programma illustra questo:

Importa Java.util.*;
Classe pubblica TheClass
public static void main (string [] args)
Arraydeque dq = nuovo arraydeque();
dq.Aggiungi ('f'); dq.Aggiungi ('g'); dq.Aggiungi ('H'); dq.Aggiungi ('i'); dq.Aggiungi ('j');
char ch1 = dq.sbirciare(); char ch2 = dq.sbirciare(); char ch3 = dq.sbirciare();
char ch4 = dq.sbirciare(); char ch5 = dq.sbirciare();
Sistema.fuori.stampa (CH1); Sistema.fuori.print ("); sistema.fuori.stampa (CH2); Sistema.fuori.stampa(");
Sistema.fuori.stampa (CH3); Sistema.fuori.print ("); sistema.fuori.stampa (CH4); Sistema.fuori.stampa(");
Sistema.fuori.stampa (CH5); Sistema.fuori.stampa(");
Sistema.fuori.println ();

L'output è:

F f f f f

indicando che nulla è stato rimosso e il primo elemento è appena stato letto cinque volte.

PUND PUBILE PUBBLICE (E E)
Questo aggiunge un elemento alla parte anteriore del deque. Il seguente programma illustra questo:

Importa Java.util.*;
Classe pubblica TheClass
public static void main (string [] args)
Arraydeque dq = nuovo arraydeque();
dq.push ('f'); dq.push ('g'); dq.push ('h'); dq.push ('i'); dq.push ('j');
char ch1 = dq.rimuovere(); char ch2 = dq.rimuovere(); char ch3 = dq.rimuovere();
char ch4 = dq.rimuovere(); char ch5 = dq.rimuovere();
Sistema.fuori.stampa (CH1); Sistema.fuori.print ("); sistema.fuori.stampa (CH2); Sistema.fuori.stampa(");
Sistema.fuori.stampa (CH3); Sistema.fuori.print ("); sistema.fuori.stampa (CH4); Sistema.fuori.stampa(");
Sistema.fuori.stampa (CH5); Sistema.fuori.stampa(");
Sistema.fuori.println ();

L'output è:

J i h g f

mostrando un comportamento di vita.

public e pop ()
Questo rimuove e restituisce il primo elemento del deque. Il seguente programma illustra questo:

Importa Java.util.*;
Classe pubblica TheClass
public static void main (string [] args)
Arraydeque dq = nuovo 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();
Sistema.fuori.stampa (CH1); Sistema.fuori.print ("); sistema.fuori.stampa (CH2); Sistema.fuori.stampa(");
Sistema.fuori.stampa (CH3); Sistema.fuori.print ("); sistema.fuori.stampa (CH4); Sistema.fuori.stampa(");
Sistema.fuori.stampa (CH5); Sistema.fuori.stampa(");
Sistema.fuori.println ();

L'output è:

J i h g f

mostrando un comportamento di vita.

public void foreach (Azione del consumatore)
Questo metodo foreach può essere utilizzato per accedere a ciascun elemento nel deque. Il seguente programma lo utilizza per stampare tutti gli elementi nel Deque:

Importa Java.util.*;
Classe pubblica TheClass
public static void main (string [] args)
Arraydeque dq = nuovo arraydeque();
dq.push ('f'); dq.push ('g'); dq.push ('h'); dq.push ('i'); dq.push ('j');
dq.foreach ((articolo) -> sistema.fuori.print (elemento + ""));
Sistema.fuori.println ();

L'output è:

J i h g f

L'elemento è una variabile fittizia che rappresenta ogni elemento nel deque. Nota il modo in cui è stato utilizzato. Nota l'uso dell'operatore freccia, -> . L'iterazione è stata eseguita in ordine inverso.

Iterator iterator ()
Questo restituisce un iteratore che può essere utilizzato per rimuovere un elemento all'interno del deque. Tuttavia, questa azione richiede più tempo che rimuovere un elemento nella parte anteriore o posteriore del Deque. La seguente affermazione restituirebbe l'iteratore per i caratteri di un deque.

Iteratore iter = dq.iteratore ();

dove iter è l'oggetto iteratore e DQ è l'oggetto Deque.

L'iteratore ha i seguenti metodi:

booleano hasNext (): restituisce vero se l'iterazione ha più elementi.

E Next (): restituisce l'elemento successivo nell'iterazione.

vuoto predefinito remove (): rimuove dall'elenco, l'ultimo elemento restituito da questo iteratore (Next).

Si noti che non ha un metodo per inserire un elemento all'interno del Deque.

Rimozione di un elemento all'interno di Deque

Il seguente programma rimuove 'H' nel mezzo dell'elenco Deque: F, G, H, I, J:

Importa Java.util.*;
Classe pubblica TheClass
public static void main (string [] args)
Arraydeque dq = nuovo arraydeque();
dq.push ('f'); dq.push ('g'); dq.push ('h'); dq.push ('i'); dq.push ('j');
Iteratore iter = dq.iteratore ();
iter.Prossimo(); iter.Prossimo(); iter.Prossimo();
iter.rimuovere();
dq.foreach ((articolo) -> sistema.fuori.print (elemento + ""));
Sistema.fuori.println ();

L'output è:

J i g f

Si noti che il prossimo () doveva essere chiamato tre volte.

Conclusione

In Java, il Deque è sia una collezione FIFO che LIFO. Deque in java è in realtà un'interfaccia da cui deve essere implementata una classe prima che possa essere utilizzata il deque. Fortunatamente, Java ha già le seguenti classi implementate di Deque: ArrayDeque, ConcorrentLinkedDeque, LinkedblockingDeque, LinkedList, LinkedList. L'operazione per Arraydeque è stata spiegata sopra.