deque java deque implementation
Acest tutorial oferă o explicație detaliată despre Deque sau „coadă dublă” în Java. Veți afla despre interfața Deque, metodele API, implementarea etc.:
Deque sau „coada dublă” în Java este o structură de date în care putem insera sau șterge elemente de la ambele capete. Deque este o interfață în Java aparținând pachetului java.util și implementează interfața java.queue.
Putem implementa deque ca structură stivă (Last In, First Out) sau ca o coadă (first-in-first-out). Deque este mai rapid decât Stack și / sau LinkedList. Deque este pronunțat ca „pachet” ca în „pachet de cărți”.
=> Verificați aici pentru a vedea A-Z a tutorialelor de instruire Java aici.
Ce veți învăța:
Aproximativ la Java
O colecție tipică de deque va arăta așa cum se arată mai jos:
convertiți YouTube în fișier WAV gratuit
Deque este utilizat în principal pentru a implementa stive, cozi sau listarea structurilor de date. Poate fi folosit și pentru a implementa cozi prioritare. Funcțiile de anulare sau istoric prezente în principal în browserele web pot fi implementate folosind deque.
Interfața Java Deque
Diagrama de mai jos prezintă ierarhia pentru coada sau deque-ul cu două capete. Așa cum se arată în diagrama de mai jos, interfața Deque se extinde la interfața Queue care, la rândul său, extinde interfața de colectare.
Pentru a utiliza o interfață deque în programul nostru, trebuie să importăm pachetul care deține funcționalitatea deque utilizând o declarație de import așa cum se arată mai jos.
import java.util.deque;
sau
import java.util.*;
Deoarece deque este o interfață, avem nevoie de clase concrete pentru a implementa funcționalitatea interfeței deque.
Cele două clase de mai jos implementează interfața deque.
- ArrayDeque
- LinkedList
Prin urmare, putem crea obiecte deque folosind aceste două clase, după cum se arată mai jos:
Deque numdeque = new ArrayDeque (); Deque strDeque = new LinkedList ();
Astfel, odată ce obiectele deque de mai sus sunt create cu succes, ele pot utiliza funcționalitatea interfeței deque.
Mai jos sunt câteva puncte importante care trebuie remarcate despre deque:
- Interfața Deque acceptă tablouri redimensionabile care pot crește după cum este necesar.
- Seturile de matrice nu permit utilizarea valorilor Null.
- Deque nu acceptă accesul simultan de mai multe fire.
- Deque nu este sigur pentru fire decât dacă este prevăzută o sincronizare externă.
ArrayDeque În Java
ArrayDeque aparține pachetului java.util. Implementează interfața deque. Pe plan intern, clasa ArrayDeque folosește o matrice redimensionabilă dinamic, care crește pe măsură ce numărul de elemente crește.
Diagrama de mai jos prezintă ierarhia pentru clasa ArrayDeque:
După cum se arată în diagramă, clasa ArrayDeque moștenește clasa AbstractCollection și implementează interfața Deque.
cel mai bun convertor gratuit de fișiere pentru Windows 10
Putem crea un obiect deque folosind clasa ArrayDeque așa cum se arată mai jos:
Deque deque_obj = new ArrayDeque ();
și Exemplu
Următorul program Java demonstrează un exemplu simplu pentru a înțelege mai bine deque. Aici, am folosit clasa ArrayDeque pentru a crea o interfață deque. Tocmai am adăugat câteva elemente la obiectul deque și apoi le-am tipărit folosind o buclă 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 + ' '); } } }
Ieșire:
API-ul Java și metode
Deoarece interfața deque implementează o interfață de coadă, aceasta acceptă toate metodele interfeței de coadă. În plus, interfața deque oferă următoarele metode care pot fi utilizate pentru a efectua diverse operații cu obiectul deque.
Să rezumăm aceste metode în tabelul de mai jos.
Metodă | Metoda prototip | Descriere |
---|---|---|
getFirst | E getFirst () | Obțineți primul element al deque-ului fără a-l scoate. |
adăuga | add boolean (E e) | Adaugă elementul dat e în deque (la coadă) fără a încălca restricțiile de capacitate și returnează adevărat dacă are succes. Aruncă IllegalStateException dacă nu există spațiu disponibil în deque. |
addFirst | void addFirst (E e) | Adaugă elementul dat e în fața cozii fără a încălca restricțiile de capacitate. |
addLast | void addLast (E e) | Adaugă elementul e la ultimul deque fără a încălca restricțiile de capacitate. |
conține | boolean conține (Obiectul o) | Verifică dacă deque conține elementul dat o. Returnează adevărat dacă da. |
descendentIterator | Iterator descendent Iterator () | Această metodă returnează iteratorul de ordine inversă pentru deque. |
element | Element E () | Returnează primul element sau capul deque. Rețineți că nu șterge elementul. |
getLast | E getLast () | Obține ultimul element al deque-ului fără a-l elimina. |
iterator | Iterator iterator () | Returnează un iterator standard peste elementele deque. |
oferi | ofertă booleană (E e) | Adaugă elementul dat e la deque (ca o coadă) fără a încălca restricțiile de capacitate. Returnează adevărat la succes și fals la eșec. |
ofertaPrima | oferta booleană First (E e) | Introduceți elementul dat e în partea din față a dequei fără a încălca restricțiile de capacitate. |
oferta Ultima | oferta booleană Ultima (E e) | Introduceți elementul dat e la capătul deque, fără a încălca restricțiile de capacitate. |
arunca o privire | E peek () | Returnează capul deque (primul element) sau nul dacă o coadă este goală. ** nu șterge capul |
peekFirst | E peekFirst () | Returnează primul element din deque fără a-l șterge. Returnează nul dacă deque este gol. |
peekLast | E peekLast () | Preluează ultimul element din deque fără a-l scoate. Returnează nul dacă deque este gol. |
sondaj | Sondaj E () | Șterge și returnează capul deque. Returnează nul dacă deque este gol. |
pollFirst | E pollFirst () | Returnează și elimină primul element al deque. Returnează nul dacă deque este gol. |
pollLast | E pollLast () | Returnează și elimină ultimul element al deque. Returnează nul dacă deque este gol. |
pop | E pop () | Scoateți elementul din stiva reprezentată folosind deque. |
Apăsați | împingere nulă (E e) | Împingeți elementul dat e pe teancul reprezentat folosind deque fără a încălca restricțiile de capacitate. Returnează adevărat la succes sau IllegalStateException dacă nu este disponibil spațiu pe deque. |
elimina | E elimina () | Scoateți și returnați capul deque. |
elimina | eliminare booleană (Obiectul o) | Eliminați prima apariție a elementului o dat din deque. |
removeFirst | E removeFirst () | Scoateți și returnați primul element al deque. |
removeFirstOccurrence | boolean removeFirstOccurrence (Obiectul o) | Elimină prima apariție a elementului o dat din deque. |
elimina Ultimul | E removeLast () | Preluează și șterge ultimul element din deque. |
removeLastOccurrence | boolean removeLastOccurrence (obiect o) | Șterge ultima apariție a unui element dat o din deque. |
mărimea | int size () | Returnează dimensiunea sau numărul de elemente din deque. |
Și implementarea în Java
Să implementăm acum un program Java pentru a demonstra unele dintre metodele majore de deque discutate mai sus.
În acest program, folosim un deque de tip String și apoi adăugăm elemente la acest deque folosind diverse metode cum ar fi add, addFirst, addLast, push, offer, offerFirst etc. Apoi afișăm deque. Apoi, definim iteratorii standard și inversi pentru deque și traversăm deque pentru a imprima elementele.
De asemenea, folosim celelalte metode cum ar fi contine, deschide, împinge, aruncă o privire, sondează, elimină 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); } }
Ieșire:
întrebări frecvente
Q # 1) Este Deque Java sigur pentru fire?
Răspuns: ArrayDeque nu este sigur pentru fire. Dar interfața BlockingDeque din clasa java.util.concurrent reprezintă deque. Acest deque este sigur pentru fire.
Q # 2) De ce este Deque mai rapid decât stiva?
Răspuns: Interfața ArrayDeque care implementează interfața deque este eficientă din punct de vedere al memoriei, deoarece nu trebuie să țină o evidență a nodurilor anterioare sau următoare. De asemenea, este o implementare redimensionabilă. Astfel, deque este mai rapid decât stiva.
Q # 3) Deque este un teanc?
Răspuns: Un deque este o coadă dublă. Permite comportamentul LIFO și, prin urmare, poate fi implementat ca o stivă, deși nu este o stivă.
Q # 4) Unde se utilizează Deque?
Răspuns: Un deque este utilizat în principal pentru a implementa caracteristici precum anularea și istoricul.
Q # 5) Deque este circular?
Răspuns: Da, Deque este circular.
Concluzie
Aceasta completează tutorialul nostru despre interfața Deque în Java. Interfața deque este implementată de o structură de date deque care este o colecție care poate insera și șterge elemente de la ambele capete.
Cele două clase adică ArrayDeque și LinkedList implementează interfața deque. Putem folosi aceste clase pentru a implementa funcționalitatea interfeței deque.
=> Vizitați aici pentru seria exclusivă de instruiri Java.
Lectură recomandată
- Coadă dublă (Deque) în C ++ cu exemple
- Coada Java - Metode de coadă, implementarea cozii cu exemple
- Tutorial Java Priority Queue - Implementare și exemple
- Structura de date a cozii prioritare în C ++ cu ilustrație
- Structura datelor în coadă în C ++ cu ilustrație
- Structura de date a cozii circulare C ++: implementare și aplicații
- Tutorial JAVA pentru începători: peste 100 de cursuri video Java practice
- Coadă prioritară în STL