deque java deque implementation
Tento výukový program poskytuje podrobné vysvetlenie pojmov Deque alebo „Dvojitý front“ v prostredí Java. Dozviete sa o rozhraní Deque, metódach API, implementácii atď.:
Deque alebo „dvojitý front“ v Jave je dátová štruktúra, do ktorej môžeme vkladať alebo mazať prvky z oboch koncov. Deque je rozhranie v Jave patriace k balíku java.util a implementuje rozhranie java.queue.
Deque môžeme implementovať ako štruktúru zásobníka (Last In, First Out) alebo ako frontu (first-in-first-out). Deque je rýchlejší ako Stack a / alebo LinkedList. Deque sa vyslovuje ako „balíček“ ako v „balíku kariet“.
=> Tu nájdete A-Z výučbových kurzov Java.
Čo sa dozviete:
Asi na Jave
Typická kolekcia deque bude vyzerať takto:
ako nastaviť falošný e - mail
Deque sa väčšinou používa na implementáciu zásobníkov, frontov alebo zoznamov dátových štruktúr. Môže sa tiež použiť na implementáciu prioritných frontov. Funkcie vrátenia alebo histórie, ktoré sa väčšinou vyskytujú vo webových prehliadačoch, je možné implementovať pomocou nástrojov.
Rozhranie Java Deque
Nasledujúci diagram zobrazuje hierarchiu dvojitého frontu alebo deque. Ako je znázornené na nasledujúcom diagrame, rozhranie Deque sa rozširuje na rozhranie Queue, ktoré zase rozširuje rozhranie Collection.
Ak chcete v našom programe použiť rozhranie deque, musíme importovať balík, ktorý obsahuje funkcie deque, pomocou príkazu na import, ako je uvedené nižšie.
import java.util.deque;
alebo
import java.util.*;
Pretože deque je rozhranie, potrebujeme na implementáciu funkcií deque interface konkrétne triedy.
Dve triedy nižšie implementujú rozhranie deque.
- ArrayDeque
- LinkedList
Preto môžeme vytvárať deque objekty pomocou týchto dvoch tried, ako je uvedené nižšie:
Deque numdeque = new ArrayDeque (); Deque strDeque = new LinkedList ();
Po úspešnom vytvorení vyššie uvedených objektov deque teda môžu využívať funkcie rozhrania deque.
Ďalej je uvedených niekoľko dôležitých vecí, ktoré je potrebné pri deque poznamenať:
- Rozhranie Deque podporuje zmeniteľné polia, ktoré sa môžu podľa potreby zväčšovať.
- Pole polí neumožňuje použitie hodnôt Null.
- Deque nepodporuje súbežný prístup viac ako jedným vláknom.
- Deque nie je bezpečný pre vlákna, pokiaľ nie je poskytnutá externá synchronizácia.
ArrayDeque v Jave
ArrayDeque patrí do balíka java.util. Implementuje deque rozhranie. Trieda ArrayDeque interne využíva dynamicky zmeniteľné pole, ktoré rastie so zvyšujúcim sa počtom prvkov.
Nasledujúci diagram zobrazuje hierarchiu pre triedu ArrayDeque:
Ako je znázornené na diagrame, trieda ArrayDeque dedí triedu AbstractCollection a implementuje rozhranie Deque.
najlepší program na zbavenie sa vírusov
Môžeme vytvoriť deque objekt pomocou triedy ArrayDeque, ako je uvedené nižšie:
Deque deque_obj = new ArrayDeque ();
a príklad
Nasledujúci program Java demonštruje jednoduchý príklad na lepšie pochopenie dekády. Tu sme na vytvorenie inštancie rozhrania deque použili triedu ArrayDeque. Práve sme do objektu deque pridali niektoré prvky a potom sme ich vytlačili pomocou slučky forEach.
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 + ' '); } } }
Výkon:
Java API A METÓDY
Pretože rozhranie deque implementuje rozhranie frontu, podporuje všetky metódy rozhrania frontu. Okrem toho rozhranie deque poskytuje nasledujúce metódy, ktoré možno použiť na vykonávanie rôznych operácií s objektom deque.
Zhrňme tieto metódy v nasledujúcej tabuľke.
Metóda | Metóda Prototyp | Popis |
---|---|---|
getFirst | E getFirst () | Získajte prvý prvok dekády bez jeho odstránenia. |
pridať | boolovský prírastok (E e) | Pridá daný prvok e do deque (na konci) bez porušenia kapacitných obmedzení a v prípade úspechu vráti hodnotu true. Ak v deque nie je k dispozícii miesto, hodí IllegalStateException. |
addFirst | void addFirst (E e) | Pridá daný prvok e do prednej časti frontu bez porušenia kapacitných obmedzení. |
pridaťPosledné | void addLast (E e) | Pridá prvok e na koniec deque bez porušenia kapacitných obmedzení. |
obsahuje | boolean obsahuje (Objekt o) | Skontroluje, či deque obsahuje daný prvok o. Ak áno, vráti hodnotu true. |
zostupneIterator | Iterátor zostupneIterátor () | Táto metóda vráti iterátor obráteného poradia pre deque. |
prvok | Prvok E () | Vráti prvý prvok alebo hlavičku deque. Upozorňujeme, že prvok sa neodstráni. |
getLast | E getLast () | Získava posledný prvok deque bez jeho odstránenia. |
iterátor | Iterátor iterátor () | Vráti štandardný iterátor nad prvkami deque. |
ponuka | boolovská ponuka (E e) | Pridá daný prvok e do deque (ako chvost) bez porušenia kapacitných obmedzení. Vráti hodnotu true pri úspechu a hodnotu false pri zlyhaní. |
ponukaPrvé | boolean offerFirst (E e) | Vložte daný prvok e na prednú stranu dekády bez porušenia kapacitných obmedzení. |
posledná ponuka | boolean offerLast (E e) | Vložte daný prvok e na koniec dekády bez porušenia kapacitných obmedzení. |
nakuknúť | E nahliadnuť () | Vráti hlavičku deque (prvý prvok) alebo null, ak je rad prázdny. ** neodstráni hlavu |
nahliadnuťPrvé | E peekFirst () | Vráti prvý prvok v deque bez jeho odstránenia. Ak je deque prázdny, vráti hodnotu null. |
nakuknúťposledné | E peekLast () | Načíta posledný prvok v deque bez jeho odstránenia. Ak je deque prázdny, vráti hodnotu null. |
anketa | E anketa () | Vymaže a vráti hlavu deque. Ak je deque prázdny, vráti hodnotu null. |
anketaPrvý | E pollFirst () | Vráti a odstráni prvý prvok deque. Ak je deque prázdny, vráti hodnotu null. |
anketaPosledné | E anketaPosledná () | Vráti a odstráni posledný prvok deque. Ak je deque prázdny, vráti hodnotu null. |
pop | E pop () | Vyberte prvok zo zásobníka, ktorý je znázornený pomocou deque. |
tam | void push (E e) | Zatlačte daný prvok e na zásobník znázornený pomocou deque bez porušenia kapacitných obmedzení. Vráti hodnotu true pri úspechu alebo IllegalStateException, ak v deque nie je k dispozícii miesto. |
odstrániť | E odstrániť () | Odstráňte a vráťte hlavu deque. |
odstrániť | boolean remove (Objekt o) | Odstráňte prvý výskyt daného prvku o z deque. |
odobraťPrvé | E removeFirst () | Odstráňte a vráťte prvý prvok dekády. |
removeFirstOccurrence | boolean removeFirstOccurrence (objekt o) | Odstráni prvý výskyt daného prvku o z deque. |
removePosledné | E removeLast () | Načíta a odstráni posledný prvok v deque. |
removeLastOccurrence | boolean removeLastOccurrence (objekt o) | Vymaže posledný výskyt daného prvku o z deque. |
veľkosť | veľkosť int () | Vráti veľkosť alebo počet prvkov v deque. |
A Implementácia V Jave
Poďme si teraz implementovať program Java, ktorý demonštruje niektoré z hlavných metód deque, o ktorých sa hovorí vyššie.
V tomto programe používame deque typu String a potom do tohto deque pridávame prvky pomocou rôznych metód ako add, addFirst, addLast, push, offer, offerFirst atď. Potom zobrazíme deque. Ďalej definujeme štandardné a reverzné iterátory pre deque a prechádzame deque pre tlač prvkov.
Používame tiež ďalšie metódy ako obsahuje, pop, push, peek, poll, remove, atď.
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); } }
Výkon:
často kladené otázky
Otázka č. 1) Je Java bezpečná pre vlákna?
Odpoveď: ArrayDeque nie je bezpečný pre vlákna. Ale rozhranie BlockingDeque v triede java.util.concurrent predstavuje deque. Toto zariadenie je bezpečné pre vlákna.
Otázka č. 2) Prečo je Deque rýchlejší ako zásobník?
Odpoveď: Rozhranie ArrayDeque, ktoré implementuje rozhranie deque, je pamäťovo efektívne, pretože nemusí sledovať predchádzajúci alebo nasledujúci uzol. Ide tiež o zmeniteľnú implementáciu. Deque je teda rýchlejší ako zásobník.
Otázka č. 3) Je Deque stoh?
Odpoveď: Deque je obojstranný rad. Umožňuje správanie LIFO, a preto ho možno implementovať ako zásobník, hoci nejde o zásobník.
Otázka č. 4) Kde sa Deque používa?
Odpoveď: Deque sa väčšinou používa na implementáciu funkcií ako undo a history.
Otázka č. 5) Je Deque kruhový?
Odpoveď: Áno, Deque je kruhový.
Záver
Týmto je dokončený náš návod o rozhraní Deque v Jave. Deque rozhranie je implementované pomocou deque dátovej štruktúry, čo je kolekcia, ktorá dokáže vkladať a mazať prvky z oboch koncov.
Dve triedy, tj. ArrayDeque a LinkedList implementujú rozhranie deque. Tieto triedy môžeme použiť na implementáciu funkčnosti deque rozhrania.
=> Navštívte tu sériu exkluzívnych výukových programov Java.
Odporúčané čítanie
- Oboustranný front (Deque) v C ++ s príkladmi
- Fronta Java - metódy fronty, implementácia frontu s príkladmi
- Výukový program pre prioritné fronty Java - Implementácia a príklady
- Štruktúra dát prioritného frontu v C ++ s ilustráciou
- Dátová štruktúra frontu v C ++ s ilustráciou
- Štruktúra dát kruhového frontu C ++: implementácia a aplikácie
- Výukový program JAVA pre začiatočníkov: viac ako 100 praktických výučbových programov Java Video
- Prioritný front v STK