deque java deque implementation
Denne opplæringen gir detaljert forklaring av Deque eller 'Dobbeltkø' i Java. Du vil lære om Deque-grensesnitt, API-metoder, implementering, etc:
Deque eller “dobbeltkø” i Java er en datastruktur der vi kan sette inn eller slette elementer fra begge ender. Deque er et grensesnitt i Java som tilhører java.util-pakken og implementerer java.queue-grensesnittet.
Vi kan implementere deque som en stack (Last In, First Out) -struktur eller som en kø (first-in-first-out). Deque er raskere enn Stack og / eller LinkedList. Deque blir uttalt som 'kortstokk' som i 'kortstokk'.
=> Sjekk her for å se AZ av Java-opplæringsveiledninger her.
Hva du vil lære:
Omtrent Java
En typisk dequesamling vil se ut som vist nedenfor:
hvordan du spiller .bin-filer på pc
Deque brukes mest til å implementere stack, kø eller liste datastrukturer. Den kan også brukes til å implementere prioritetskøer. Funksjonene i angre eller historie som for det meste er til stede i nettleserne kan implementeres ved hjelp av deques.
Java Deque-grensesnitt
Diagrammet nedenfor viser hierarkiet for den dobbelte køen eller deken. Som vist i diagrammet nedenfor strekker Deque-grensesnittet seg til køgrensesnittet som igjen utvider samlingsgrensesnittet.
For å bruke et deque-grensesnitt i programmet vårt, må vi importere pakken som inneholder deque-funksjonalitet ved hjelp av en importerklæring som vist nedenfor.
import java.util.deque;
eller
import java.util.*;
Siden deque er et grensesnitt, trenger vi konkrete klasser for å implementere funksjonaliteten til deque-grensesnittet.
De to klassene nedenfor implementerer deque-grensesnittet.
- ArrayDeque
- LinkedList
Derfor kan vi lage deque-objekter ved hjelp av disse to klassene som vist nedenfor:
Deque numdeque = new ArrayDeque (); Deque strDeque = new LinkedList ();
Så snart de ovennevnte deque-objektene er opprettet, kan de bruke funksjonaliteten til deque-grensesnittet.
Nedenfor er noen viktige punkter å merke seg om deque:
- Deque-grensesnittet støtter størrelsesendring av matriser som kan vokse etter behov.
- Array deques tillater ikke bruk av nullverdier.
- Deque støtter ikke tilgang samtidig med mer enn én tråd.
- Deque er ikke trådsikkert med mindre en ekstern synkronisering er gitt.
ArrayDeque i Java
ArrayDeque tilhører pakken java.util. Den implementerer deque-grensesnittet. Internt bruker ArrayDeque-klassen en dynamisk resizable matrise som vokser etter hvert som antall elementer økes.
Diagrammet nedenfor viser hierarkiet for ArrayDeque-klassen:
Som vist i diagrammet, arver ArrayDeque-klassen AbstractCollection-klassen og implementerer Deque-grensesnittet.
hva er det beste programmet for fjerning av skadelig programvare
Vi kan lage et deque-objekt ved hjelp av ArrayDeque-klassen som vist nedenfor:
Deque deque_obj = new ArrayDeque ();
og eksempel
Følgende Java-program viser et enkelt eksempel for bedre å forstå deque. Her har vi brukt ArrayDeque-klassen til å instansiere deque-grensesnittet. Vi har nettopp lagt til noen elementer i deque-objektet og deretter skrevet dem ut med en forEach-løkke.
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 + ' '); } } }
Produksjon:
Java API OG METODER
Siden deque-grensesnittet implementerer et køgrensesnitt, støtter det alle metodene i køgrensesnittet. Dessuten gir deque-grensesnittet følgende metoder som kan brukes til å utføre forskjellige operasjoner med deque-objektet.
La oss oppsummere disse metodene i tabellen nedenfor.
Metode | Metode Prototype | Beskrivelse |
---|---|---|
getFirst | E getFirst () | Hent ut det første elementet i deken uten å fjerne det. |
Legg til | boolsk tilsetning (E e) | Legger til gitt element e i deken (ved halen) uten å bryte kapasitetsbegrensningene og returnerer true hvis suksess. Kaster IllegalStateException hvis det ikke er ledig plass i dekken. |
addFirst | ugyldig addFirst (E e) | Legger til gitt element e foran i køen uten å bryte kapasitetsbegrensningene. |
addLast | ugyldig addLast (E e) | Legger til element e til den siste av deken uten å bryte kapasitetsbegrensningene. |
inneholder | boolsk inneholder (Objekt o) | Sjekker om dekken inneholder gitt element o. Returnerer sant hvis ja. |
synkendeIterator | Iterator synkendeIterator () | Denne metoden returnerer omvendt rekkefølge iterator for deque. |
element | E-element () | Returnerer det første elementet eller hodet til deken. Merk at det ikke sletter elementet. |
getLast | E getLast () | Får det siste elementet i deken uten å fjerne det. |
iterator | Iterator iterator () | Returnerer en standard iterator over elementene i deken. |
by på | boolsk tilbud (E e) | Legger til gitt element e i deken (som en hale) uten å bryte kapasitetsbegrensningene. Returnerer sant ved suksess og falsk ved svikt. |
tilbudFørst | boolsk tilbudFirst (E e) | Sett det gitte elementet e foran fronten uten å bryte kapasitetsbegrensningene. |
tilbudSiste | boolsk tilbudLast (E e) | Sett inn det gitte elementet e på slutten av dekken uten å bryte kapasitetsbegrensningene. |
kikke | E titt () | Returnerer hodet til deque (første element) eller null hvis en kø er tom. ** sletter ikke hodet |
kikk først | E peekFirst () | Returnerer det første elementet i deken uten å slette det. Returnerer null hvis dekken er tom. |
peekLast | E tittLast () | Henter det siste elementet i deken uten å fjerne det. Returnerer null hvis dekken er tom. |
avstemming | E-avstemning () | Sletter og returnerer hodet til deque. Returnerer null hvis dekken er tom. |
meningsmålingFørst | E pollFirst () | Returnerer og fjerner det første elementet i deken. Returnerer null hvis dekken er tom. |
pollSiste | E pollLast () | Returnerer og fjerner det siste elementet i deken. Returnerer null hvis dekken er tom. |
pop | E pop () | Popp elementet fra bunken som er representert ved hjelp av deque. |
trykk | ugyldig trykk (E e) | Skyv gitt element e på stakken som er representert ved hjelp av deque uten å bryte kapasitetsbegrensningene. Returnerer sant ved suksess eller IllegalStateException hvis det ikke er ledig plass på deque. |
ta vekk | E fjerne () | Fjern og legg tilbake hodet til deque. |
ta vekk | boolsk fjerning (Objekt o) | Fjern den første forekomsten av det gitte elementet o fra deque. |
Fjern første | E removeFirst () | Fjern og returner det første elementet i deken. |
removeFirstOccurrence | boolsk removeFirstOccurrence (Objekt o) | Fjerner den første forekomsten av det gitte elementet o fra deque. |
removeLast | E removeLast () | Henter og sletter det siste elementet i deque. |
removeLastOccurrence | boolean removeLastOccurrence (Objekt o) | Sletter den siste forekomsten av et gitt element o fra deque. |
størrelse | int størrelse () | Returnerer størrelsen eller antall elementer i deken. |
Og implementering i Java
La oss nå implementere et Java-program for å demonstrere noen av de viktigste deque-metodene diskutert ovenfor.
I dette programmet bruker vi en streng type deque og legger deretter til elementer i denne deque ved å bruke forskjellige metoder som add, addFirst, addLast, push, offer, offerFirst, etc. Så viser vi deque. Deretter definerer vi standard- og revers-iteratorene for deque og krysser gjennom deque for å skrive ut elementene.
Vi bruker også de andre metodene som inneholder, pop, push, peek, poll, remove, etc.
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); } }
Produksjon:
ofte stilte spørsmål
Q # 1) Er Deque trådsikker Java?
Svar: ArrayDeque er ikke trådsikker. Men BlockingDeque-grensesnittet i klassen java.util.concurrent representerer deque. Denne dekken er trådsikker.
Q # 2) Hvorfor er Deque raskere enn stack?
Svar: ArrayDeque-grensesnittet som implementerer deque-grensesnittet er minneeffektivt, da det ikke trenger å holde oversikt over forrige eller neste noder. Det er også en størrelse som kan implementeres. Dermed er deque raskere enn stabelen.
Q # 3) Er Deque en stabel?
Svar: En deque er en kø med dobbelt slutt. Det tillater LIFO-oppførsel, og dermed kan den implementeres som en stabel, selv om den ikke er en stabel.
Q # 4) Hvor brukes Deque?
Svar: En deque brukes mest til å implementere funksjoner som angre og historie.
Q # 5) Er Deque sirkulær?
Svar: Ja, Deque er sirkulær.
Konklusjon
Dette fullfører opplæringen vår om Deque-grensesnittet i Java. Deque-grensesnittet er implementert av en deque-datastruktur som er en samling som kan sette inn og slette elementer fra begge ender.
De to klassene, dvs. ArrayDeque og LinkedList, implementerer deque-grensesnittet. Vi kan bruke disse klassene til å implementere funksjonaliteten til deque-grensesnittet.
=> Besøk her for den eksklusive opplæringsserien for Java Training.
Anbefalt lesing
- Dobbelt slutt kø (Deque) i C ++ med eksempler
- Java kø - kømetoder, køimplementering med eksempler
- Java Priority Queue Tutorial - Implementation & Eksempler
- Prioritert kødatastruktur i C ++ med illustrasjon
- Kødatastruktur i C ++ med illustrasjon
- C ++ Circular Queue Data Structure: Implementation & Applications
- JAVA-opplæring for nybegynnere: 100+ praktiske Java-videoveiledninger
- Prioritetskø I STL