deque java deque implementation
Ovaj vodič pruža detaljno objašnjenje Dequea ili 'Dvostrukog reda čekanja' na Javi. Naučit ćete o Deque sučelju, API metodama, implementaciji itd.:
Deque ili 'dvostruki red čekanja' u Javi je struktura podataka u koju možemo umetnuti ili izbrisati elemente s oba kraja. Deque je sučelje u Javi koje pripada paketu java.util i implementira sučelje java.queue.
Deque možemo implementirati kao strukturu stoga (Last In, First Out) ili kao red (prvi u prvom izlazu). Deque je brži od Stacka i / ili LinkedLista. Deque se izgovara kao 'špil' kao u 'špil karata'.
=> Ovdje pogledajte kako biste ovdje vidjeli A-Z Java Vodiča za obuku.
Što ćete naučiti:
Otprilike na Javi
Tipična deque kolekcija izgledat će kao što je prikazano u nastavku:

kako koristiti sort u javi
Deque se uglavnom koristi za implementaciju struktura podataka sloga, reda ili popisa. Također se može koristiti za implementaciju prioritetnih redova. Značajke poništavanja ili povijesti koje su uglavnom prisutne u web preglednicima mogu se implementirati pomoću deque-a.
Java Deque sučelje
Dijagram u nastavku prikazuje hijerarhiju za dvostruki red ili deque. Kao što je prikazano na donjem dijagramu, sučelje Deque proteže se na sučelje reda čekanja koje zauzvrat proširuje sučelje Collection.

Da bismo koristili sučelje deque u našem programu, moramo uvesti paket koji sadrži funkciju deque pomoću naredbe import kao što je prikazano dolje.
import java.util.deque; ili
import java.util.*; Kako je deque sučelje, trebaju nam konkretne klase kako bismo implementirali funkcionalnost deque sučelja.
Dvije klase u nastavku implementiraju deque sučelje.
- ArrayDeque
- LinkedList
Stoga možemo stvoriti deque objekte koristeći ove dvije klase kako je prikazano u nastavku:
Deque numdeque = new ArrayDeque (); Deque strDeque = new LinkedList (); Dakle, nakon što su gore navedeni deque objekti uspješno stvoreni, oni mogu koristiti funkcionalnost deque sučelja.
Slijedi nekoliko važnih napomena o dequeu:
- Sučelje Deque podržava promjenjive nizove koji se mogu rasti prema potrebi.
- Deque-ovi nizova ne dopuštaju upotrebu null vrijednosti.
- Deque ne podržava istodobni pristup s više niti.
- Deque nije siguran u niti ako nije osigurana vanjska sinkronizacija.
ArrayDeque u Javi
ArrayDeque pripada paketu java.util. Primjenjuje deque sučelje. Klasa ArrayDeque interno koristi dinamički promjenjivi niz koji raste kako se povećava broj elemenata.
Dijagram u nastavku prikazuje hijerarhiju za klasu ArrayDeque:

Kao što je prikazano na dijagramu, klasa ArrayDeque nasljeđuje klasu AbstractCollection i implementira Deque sučelje.
koji je najbolji besplatni blokator oglasa za krom
Objekt deque možemo stvoriti pomoću klase ArrayDeque kako je prikazano dolje:
Deque deque_obj = new ArrayDeque (); i Primjer
Sljedeći Java program prikazuje jednostavan primjer za bolje razumijevanje dequea. Ovdje smo koristili klasu ArrayDeque za instanciranje deque sučelja. Upravo smo dodali neke elemente u objekt deque, a zatim smo ih ispisali pomoću forEach petlje.
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 + ' '); } } } Izlaz:

Java API i METODE
Kako sučelje deque implementira sučelje reda, podržava sve metode sučelja reda. Osim toga, sučelje deque nudi sljedeće metode koje se mogu koristiti za izvođenje različitih operacija s objektom deque.
Sažmimo ove metode u donjoj tablici.
| Metoda | Prototip metode | Opis |
|---|---|---|
| getFirst | E getFirst () | Dohvatite prvi element dequea bez uklanjanja. |
| dodati | boolean add (E e) | Dodaje dati element e u deque (na repu) bez kršenja ograničenja kapaciteta i vraća true ako uspjeh. Baca IllegalStateException ako nema mjesta u dequeu. |
| addFirst | void addFirst (E e) | Dodaje dati element e na čekanje bez kršenja ograničenja kapaciteta. |
| addLast | void addLast (E e) | Dodaje element e posljednjem dijelu dequea bez kršenja ograničenja kapaciteta. |
| sadrži | boolean sadrži (objekt o) | Provjerava sadrži li deque zadani element o. Vraća ako je da. |
| silazniIterator | Iterator silaznoIterator () | Ova metoda vraća iterator obrnutog reda za deque. |
| element | E element () | Vraća prvi element ili glavu deque-a. Imajte na umu da ne briše element. |
| getLast | E getLast () | Dobiva posljednji element dequea bez uklanjanja. |
| iterator | Iterator iterator () | Vraća standardni iterator preko elemenata deque-a. |
| ponuda | logička ponuda (E e) | Dodaje dati element e u deque (kao rep) bez kršenja ograničenja kapaciteta. Vraća true na uspjeh i false na neuspjeh. |
| ponudaPrvo | logička ponudaFirst (E e) | Umetnite zadani element e u prednji dio sloja bez kršenja ograničenja kapaciteta. |
| ponudaLast | boolean offerLast (E e) | Umetnite zadani element e na kraj šupljine bez kršenja ograničenja kapaciteta. |
| zaviriti | E zaviriti () | Vraća glavu deque (prvog elementa) ili nulu ako je red prazan. ** ne briše glavu |
| zaviritiPrvo | E peekFirst () | Vraća prvi element u dequeu bez brisanja. Vraća nulu ako je deque prazan. |
| zaviritiLast | E peekLast () | Dohvaća zadnji element u dequeu bez uklanjanja. Vraća nulu ako je deque prazan. |
| anketa | E anketa () | Briše i vraća glavu deque-a. Vraća nulu ako je deque prazan. |
| anketaPrvo | E-anketaPrvo () | Vraća i uklanja prvi element deque-a. Vraća nulu ako je deque prazan. |
| anketaPosljednja | E-anketaPosljednja () | Vraća i uklanja posljednji element deque-a. Vraća nulu ako je deque prazan. |
| pop | E pop () | Iskočite element iz hrpe koji je predstavljen pomoću deque. |
| gurnuti | prazno guranje (E e) | Gurnite zadani element e na stog predstavljen koristeći deque bez kršenja ograničenja kapaciteta. Vraća true u slučaju uspjeha ili IllegalStateException ako na dequeu nema slobodnog prostora. |
| ukloniti | E ukloni () | Uklonite i vratite glavu šupljine. |
| ukloniti | logičko uklanjanje (objekt o) | Uklonite prvu pojavu datog elementa o iz deque. |
| uklonitiPrvo | E removeFirst () | Uklonite i vratite prvi element deque. |
| removeFirstOccurrence | boolean removeFirstOccurrence (objekt o) | Uklanja prvu pojavu datog elementa o iz dequea. |
| removeLast | E removeLast () | Dohvaća i briše posljednji element u dequeu. |
| removeLastOccurrence | boolean removeLastOccurrence (objekt o) | Briše posljednju pojavu datog elementa o iz deque. |
| veličina | veličina int () | Vraća veličinu ili broj elemenata u dequeu. |
I implementacija u Javi
Primijenimo sada program Java kako bismo demonstrirali neke od glavnih gore opisanih deque metoda.
U ovom programu koristimo String tip deque, a zatim dodamo elemente u njega koristeći razne metode poput add, addFirst, addLast, push, offer, offerFirst, itd. Zatim prikazujemo deque. Dalje, definiramo standardni i obrnuti iterator za deque i prelazimo kroz deque za ispis elemenata.
Također koristimo i druge metode poput sadrži, iskakanje, guranje, zavirivanje, anketiranje, uklanjanje itd.
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); } }Izlaz:

Često postavljana pitanja
P # 1) Je li Java sigurna u niti Deque?
Odgovor: ArrayDeque nije siguran u niti. Ali sučelje BlockingDeque u klasi java.util.concurrent predstavlja deque. Ovaj deque je siguran u niti.
P # 2) Zašto je Deque brži od stoga?
Odgovor: Sučelje ArrayDeque koje implementira deque sučelje učinkovito je memorijski jer ne mora voditi evidenciju o prethodnim ili sljedećim čvorovima. Također je promjena veličine. Stoga je deque brži od stoga.
3. pitanje) Je li Deque stog?
Odgovor: Deque je dvostruki red. Omogućuje ponašanje LIFO-a i stoga se može implementirati kao stog, iako nije stog.
P # 4) Gdje se koristi Deque?
Odgovor: Deque se uglavnom koristi za implementaciju značajki poput poništavanja i povijesti.
P # 5) Je li Deque kružni?
Odgovor: Da, Deque je kružna.
Zaključak
Ovim je završen naš vodič o sučelju Deque u Javi. Deque sučelje implementirano je deque podatkovnom strukturom koja je zbirka koja može umetati i brisati elemente s oba kraja.
Dvije klase, tj. ArrayDeque i LinkedList implementiraju deque sučelje. Te klase možemo koristiti za implementaciju funkcionalnosti deque sučelja.
=> Posjetite ovdje za ekskluzivnu seriju udžbenika za Java.
Preporučena literatura
- Dvostruko završen red (Deque) u C ++ s primjerima
- Java Queue - Metode reda, implementacija reda s primjerima
- Vodič za prioritetni redoslijed Java - Implementacija i primjeri
- Struktura podataka prioritetnog reda u C ++ s ilustracijom
- Struktura podataka u redu čekanja u C ++ s ilustracijom
- Struktura podataka kružnog reda C ++: Implementacija i primjene
- JAVA Tutorial za početnike: 100+ praktičnih Java Video tutorijala
- Redoslijed prioriteta u STL-u