deque java deque implementation
Aquest tutorial proporciona una explicació detallada de Deque o 'Cua de doble extrem' a Java. Aprendràs sobre Deque Interface, mètodes API, implementació, etc.:
La Deque o 'cua de doble punt' a Java és una estructura de dades en la qual podem inserir o eliminar elements dels dos extrems. El deque és una interfície a Java que pertany al paquet java.util i implementa la interfície java.queue.
Podem implementar deque com una estructura de pila (Last In, First Out) o com una cua (first-in-first-out). Deque és més ràpid que Stack i / o LinkedList. Deque es pronuncia com a 'baralla' com a la 'baralla de cartes'.
=> Consulteu aquí per veure aquí A-Z de tutorials de formació.
Què aprendreu:
Aproximadament a Java
Una col·lecció de deque típica es mostrarà com es mostra a continuació:
Preguntes d’entrevistes javascript per a professionals experimentats
Deque s’utilitza principalment per implementar estructures de dades de pila, cua o llista. També es pot utilitzar per implementar cues de prioritat. Les funcions de desfer o historial presents principalment als navegadors web es poden implementar mitjançant deques.
Interfície Java Deque
El diagrama següent mostra la jerarquia de la cua o deque de doble extrem. Com es mostra al diagrama següent, la interfície Deque s'estén a la interfície de cua que al seu torn amplia la interfície de col·lecció.
Per utilitzar una interfície deque al nostre programa, hem d’importar el paquet que conté la funcionalitat deque mitjançant una declaració d’importació, tal com es mostra a continuació.
import java.util.deque;
o bé
import java.util.*;
Com que el deque és una interfície, necessitem classes concretes per implementar la funcionalitat de la interfície deque.
Les dues classes següents, implementen la interfície deque.
- ArrayDeque
- Llista enllaçada
Per tant, podem crear objectes deque utilitzant aquestes dues classes com es mostra a continuació:
Deque numdeque = new ArrayDeque (); Deque strDeque = new LinkedList ();
Així, un cop es creïn correctament els objectes deque anteriors, poden utilitzar la funcionalitat de la interfície deque.
A continuació, es detallen alguns punts importants sobre el deque:
- La interfície Deque admet matrius redimensionables que poden créixer segons sigui necessari.
- Les matrius deques no permeten l'ús de valors Nuls.
- Deque no admet l'accés simultani de més d'un fil.
- Deque no és apte per a fils, tret que es proporcioni una sincronització externa.
ArrayDeque a Java
ArrayDeque pertany al paquet java.util. Implementa la interfície deque. Internament, la classe ArrayDeque fa ús d'una matriu redimensionable dinàmicament que creix a mesura que augmenta el nombre d'elements.
El diagrama següent mostra la jerarquia de la classe ArrayDeque:
Com es mostra al diagrama, la classe ArrayDeque hereta la classe AbstractCollection i implementa la interfície Deque.
top 50 sql complicat entrevista preguntes pdf
Podem crear un objecte deque mitjançant la classe ArrayDeque com es mostra a continuació:
Deque deque_obj = new ArrayDeque ();
i Exemple
El següent programa Java mostra un exemple senzill per entendre millor el deque. Aquí hem utilitzat la classe ArrayDeque per instanciar la interfície deque. Acabem d’afegir alguns elements a l’objecte deque i després els hem imprès mitjançant un bucle 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 + ' '); } } }
Sortida:
L'API Java I MÈTODES
Com que la interfície deque implementa una interfície de cua, admet tots els mètodes de la interfície de cua. A més, la interfície deque proporciona els mètodes següents que es poden utilitzar per realitzar diverses operacions amb l'objecte deque.
Resumim aquests mètodes a la taula següent.
Mètode | Mètode prototip | Descripció |
---|---|---|
getFirst | E getFirst () | Recupereu el primer element del deque sense eliminar-lo. |
afegir | addició booleana (E e) | Afegeix l’element donat e al deque (a la cua) sense infringir les restriccions de capacitat i torna cert si té èxit. Llança IllegalStateException si no hi ha espai disponible al deque. |
addFirst | void addFirst (E e) | Afegeix l'element donat e a la part frontal de la cua sense infringir les restriccions de capacitat. |
afegirDarrer | void addLast (E e) | Afegeix l'element e a l'últim del deque sense violar les restriccions de capacitat. |
conté | booleà conté (Objecte o) | Comprova si el deque conté l'element o donat. Retorna cert si és afirmatiu. |
descendingIterator | Iterador descendent Iterador () | Aquest mètode retorna l'iterador d'ordre invers per al deque. |
element | Element E () | Retorna el primer element o cap del deque. Tingueu en compte que no elimina l'element. |
getLast | E getLast () | Obté l’últim element del deque sense eliminar-lo. |
iterador | Iterador iterador () | Retorna un iterador estàndard sobre els elements del deque. |
oferta | oferta booleana (E e) | Afegeix l’element donat e al deque (com una cua) sense infringir les restriccions de capacitat. Retorna cert en cas d'èxit i fals en cas d'error. |
ofertaPrimer | oferta booleana Primer (E e) | Inseriu l’element donat e a la part davantera del dispositiu sense infringir les restriccions de capacitat. |
ofertaDarrer | oferta booleana Darrer (E e) | Inseriu l’element donat e al final del deque sense violar les restriccions de capacitat. |
ullada | E peek () | Retorna el cap del deque (primer element) o nul si una cua està buida. ** no suprimeix el cap |
peekFirst | E peekFirst () | Retorna el primer element del deque sense suprimir-lo. Retorna nul si el deque està buit. |
peekLast | E peekLast () | Recupera l’últim element del deque sense eliminar-lo. Retorna nul si el deque està buit. |
enquesta | Enquesta E () | Elimina i retorna el cap del deque. Retorna nul si el deque està buit. |
pollFirst | E pollFirst () | Retorna i elimina el primer element del deque. Retorna nul si el deque està buit. |
pollLast | E pollLast () | Retorna i elimina l'últim element del deque. Retorna nul si el deque està buit. |
pop | E pop () | Traieu l'element de la pila que es representa mitjançant deque. |
empènyer | empenta nul·la (E e) | Premeu l’element donat e a la pila representada mitjançant deque sense violar les restriccions de capacitat. Retorna cert en cas d'èxit o excepció IllegalStateException si no hi ha espai disponible a deque. |
eliminar | Eliminar () | Traieu i torneu el cap del deque. |
eliminar | eliminar booleà (objecte o) | Elimineu la primera ocurrència de l'element o donat del deque. |
removeFirst | E removeFirst () | Traieu i torneu el primer element del deque. |
removeFirstOccurrence | booleà removeFirstOccurrence (objecte o) | Elimina la primera ocurrència de l'element o donat del deque. |
eliminar Darrer | E removeLast () | Recupera i suprimeix l'últim element del deque. |
removeLastOccurrence | booleà removeLastOccurrence (objecte o) | Suprimeix l'última aparició d'un determinat element o del deque. |
mida | int size () | Retorna la mida o el nombre d'elements del deque. |
I implementació a Java
Implantem ara un programa Java per demostrar alguns dels principals mètodes de deque comentats anteriorment.
En aquest programa, fem servir un tipus de cadena deque i, a continuació, afegim elements a aquest deque mitjançant diversos mètodes com ara add, addFirst, addLast, push, offer, offerFirst, etc. A continuació, mostrem el deque. A continuació, definim els iteradors estàndard i invers per al deque i recorrem el deque per imprimir els elements.
També fem servir altres mètodes com conté, esclata, empeny, mira, enquesta, elimina, 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); } }
Sortida:
Preguntes freqüents
P # 1) El Java és segur per a fils Deque?
Resposta: ArrayDeque no és apte per a fils. Però la interfície BlockingDeque de la classe java.util.concurrent representa el deque. Aquest deque és apte per a fils.
Q # 2) Per què Deque és més ràpid que la pila?
Resposta: La interfície ArrayDeque que implementa la interfície deque és eficient en memòria, ja que no necessita fer un seguiment dels nodes anteriors o següents. A més, és una implementació redimensionable. Per tant, el deque és més ràpid que la pila.
Q # 3) Deque és una pila?
Resposta: Un deque és una cua de doble finalitat. Permet el comportament de LIFO i, per tant, es pot implementar com una pila encara que no sigui una pila.
Q # 4) On s’utilitza Deque?
Resposta: Un deque s’utilitza principalment per implementar funcions com desfer i historial.
P # 5) Deque és circular?
Resposta: Sí, Deque és circular.
Conclusió
Això completa el nostre tutorial sobre la interfície Deque a Java. La interfície deque està implementada per una estructura de dades deque que és una col·lecció que pot inserir i eliminar elements dels dos extrems.
Les dues classes, ArrayDeque i LinkedList, implementen la interfície deque. Podem utilitzar aquestes classes per implementar la funcionalitat de la interfície deque.
=> Visiteu aquí la sèrie exclusiva de cursos de formació de Java.
Lectura recomanada
- Cua de doble finalitat (Deque) a C ++ amb exemples
- Cua de Java: mètodes de cua, implementació de cues amb exemples
- Tutorial de la cua de prioritat de Java: implementació i exemples
- Estructura de dades de la cua de prioritat en C ++ amb il·lustració
- Estructura de dades de la cua en C ++ amb il·lustració
- Estructura de dades de la cua circular C ++: implementació i aplicacions
- Tutorial JAVA per a principiants: més de 100 tutorials pràctics de vídeo Java
- Cua de prioritat a STL