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:
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:
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:
public int size ()
Questo restituisce la dimensione (lunghezza) del deque. Il seguente programma illustra questo:
L'output è 5.
public e remove ()
Questo è l'equivalente di Dequeue. Rimuove un elemento dalla parte anteriore dell'elenco. Il seguente programma illustra questo:
L'output è:
F g h i jmostrando un comportamento FIFO.
public E Peek ()
Questo legge l'elemento nella parte anteriore del deque senza rimuoverlo. Il seguente programma illustra questo:
L'output è:
F f f f findicando 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:
L'output è:
J i h g fmostrando un comportamento di vita.
public e pop ()
Questo rimuove e restituisce il primo elemento del deque. Il seguente programma illustra questo:
L'output è:
J i h g fmostrando 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:
L'output è:
J i h g fL'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.
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.*;L'output è:
J i g fSi 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.