En stabel i databehandling er en listedatastruktur for siste-in_first-out (LIFO). Dette betyr å legge til et nytt element, elementet skyves foran på listen; Og for å fjerne et element, er elementet ut fra fronten av listen. Frontelementet kan også kikkes, noe som betyr å lese det, men ikke fjerne det.
Navnet “Deque” er den korte formen for “Double End Queue”, uttales “Deck”. Deque er en FIFO og en LIFO -liste datastruktur i Java. Vel, også i Java er deque et grensesnitt som klasser kan implementeres. Java har allerede følgende klasser implementert: Arraydeque, ConcurrentLinkedDeque, LinkedBlockingDeque, LinkedList. Arraydeque -klassen er valgt å bli studert i denne artikkelen.
Følgende er Java Arraydeque tilsvarende metoder for kø:
Kø | Arraydeque |
---|---|
enqueue | Legg til |
Dequeue | fjerne |
Peek | Peek |
Følgende er Java Arraydeque tilsvarende metoder for stabel:
Stable | Arraydeque |
---|---|
trykk | trykk |
pop | pop |
Peek | Peek |
Merk: Peek () -metoden er den samme for begge atferd. Også fjerne () og pop () er veldig like; De blir forklart nedenfor.
Konstruere en arraydeque
Arraydeque -klassen er i Java.util.* pakke, som må importeres. Den har tre konstruktører, hvorav to er forklart her.
public arraydeque ()
Dette skaper en tom deque, som følgende kodesegment viser:
Fem elementer ble lagt til. Navnet på deque her er, DQ.
offentlig Arraydeque (samling C)
Denne overbelastede konstruktøren, skaper en deque fra en annen deque. Følgende kodesegment illustrerer dette:
DQ1 er opprettet fra DQ.
Metoder for arraydeque -klassen
Offentlig boolsk add (e e)
Dette tilsvarer enqueue. Det legger til et element på slutten av deque. Følgende program illustrerer dette:
offentlig int -størrelse ()
Dette returnerer størrelsen (lengden) på deque. Følgende program illustrerer dette:
Utgangen er 5.
offentlig e fjerne ()
Dette tilsvarer dequeue. Det fjerner et element fra fronten av listen. Følgende program illustrerer dette:
Utgangen er:
F g h i jViser en FIFO -oppførsel.
public e Peek ()
Dette leser elementet foran av deque uten å fjerne det. Følgende program illustrerer dette:
Utgangen er:
F f f f f f fsom indikerer at ingenting er fjernet, og det første elementet har nettopp blitt lest fem ganger.
public void push (e e)
Dette tilfører et element foran av deque. Følgende program illustrerer dette:
Utgangen er:
J i h g fViser en LIFO -oppførsel.
public e pop ()
Dette fjerner og returnerer det første elementet i deque. Følgende program illustrerer dette:
Utgangen er:
J i h g fViser en LIFO -oppførsel.
offentlig tomrom foreach (forbrukerhandling)
Denne foreach -metoden kan brukes til å få tilgang til hvert element i deque. Følgende program bruker det til å skrive ut alle elementene i deque:
Utgangen er:
J i h g fElementet er en dummy -variabel som representerer hvert element i deque. Legg merke til hvordan den har blitt brukt. Legg merke til bruken av piloperatøren, -> . Iterasjonen ble gjort i omvendt rekkefølge.
Iterator iterator ()
Dette returnerer en iterator som kan brukes til å fjerne et element i deque. Imidlertid tar denne handlingen lengre tid enn å fjerne et element foran eller baksiden av deque. Følgende uttalelse ville returnere iteratoren for karakterer av en deque.
hvor iter er iteratorobjektet, og DQ er deque -objektet.
Iteratoren har følgende metoder:
Boolean HasNext (): Returnerer sant hvis iterasjonen har flere elementer.
E Next (): Returnerer neste element i iterasjonen.
Standard tomrom fjerne (): Fjerner fra listen, det siste elementet som er returnert av denne iteratoren (neste).
Merk at den ikke har en metode for å sette inn et element i deque.
Fjerne et element innenfor deque
Følgende program fjerner 'H' midt på deque -listen: F, G, H, I, J:
Importer Java.util.*;Utgangen er:
J i g fMerk at neste () måtte ringes tre ganger.
Konklusjon
I Java er Deque både en FIFO- og LIFO -samling. Deque i Java er faktisk et grensesnitt som en klasse må implementeres fra før deque kan brukes. Heldigvis har Java allerede følgende deque implementerte klasser: ArrayDeque, ConcurrentLinkedDeque, LinkedBlockingDeque, LinkedList. Operasjonen for arraydeque er blitt forklart ovenfor.