deque java deque implementation
Este tutorial proporciona una explicación detallada de Deque o 'Cola de dos extremos' en Java. Aprenderá sobre la interfaz Deque, los métodos API, la implementación, etc.
La Deque o 'cola de dos extremos' en Java es una estructura de datos en la que podemos insertar o eliminar elementos de ambos extremos. El deque es una interfaz en Java que pertenece al paquete java.util e implementa la interfaz java.queue.
Podemos implementar deque como una estructura de pila (último en entrar, primero en salir) o como una cola (primero en entrar, primero en salir). Deque es más rápido que Stack y / o LinkedList. Deque se pronuncia como 'baraja' como en la 'baraja de cartas'.
=> Consulte aquí para ver los tutoriales de formación de A-Z de Java aquí.
Lo que vas a aprender:
Sobre Java
Una colección típica de deque se verá como se muestra a continuación:
mejor ide de python gratis para windows
Deque se usa principalmente para implementar estructuras de datos de pila, cola o lista. También se puede utilizar para implementar colas de prioridad. Las características de deshacer o historial presentes en su mayoría en los navegadores web se pueden implementar usando deques.
Interfaz Java Deque
El siguiente diagrama muestra la jerarquía de la cola o deque de dos extremos. Como se muestra en el diagrama a continuación, la interfaz Deque se extiende a la interfaz Queue que a su vez extiende la interfaz Collection.
Para usar una interfaz deque en nuestro programa, tenemos que importar el paquete que contiene la funcionalidad deque usando una declaración de importación como se muestra a continuación.
|_+_|o
|_+_|Como deque es una interfaz, necesitamos clases concretas para implementar la funcionalidad de la interfaz deque.
Las dos clases siguientes implementan la interfaz deque.
- ArrayDeque
- Lista enlazada
Por lo tanto, podemos crear objetos deque usando estas dos clases como se muestra a continuación:
|_+_|Por lo tanto, una vez que los objetos deque anteriores se hayan creado con éxito, pueden usar la funcionalidad de la interfaz deque.
A continuación se presentan algunos puntos importantes que deben tenerse en cuenta sobre deque:
- La interfaz Deque admite matrices de tamaño variable que pueden crecer según sea necesario.
- Los deques de matriz no permiten el uso de valores nulos.
- Deque no admite el acceso simultáneo de más de un hilo.
- Deque no es seguro para subprocesos a menos que se proporcione una sincronización externa.
ArrayDeque en Java
ArrayDeque pertenece al paquete java.util. Implementa la interfaz deque. Internamente, la clase ArrayDeque hace uso de una matriz redimensionable dinámicamente que crece a medida que aumenta el número de elementos.
El siguiente diagrama muestra la jerarquía de la clase ArrayDeque:
Como se muestra en el diagrama, la clase ArrayDeque hereda la clase AbstractCollection e implementa la interfaz Deque.
la mejor aplicación gratuita de descarga de música para Android
Podemos crear un objeto deque usando la clase ArrayDeque como se muestra a continuación:
|_+_|y ejemplo
El siguiente programa Java muestra un ejemplo sencillo para comprender mejor el deque. Aquí, hemos utilizado la clase ArrayDeque para instanciar la interfaz deque. Acabamos de agregar algunos elementos al objeto deque y luego los imprimimos usando un bucle forEach.
|_+_|Producción:
La API y los métodos de Java
Como la interfaz deque implementa una interfaz de cola, admite todos los métodos de la interfaz de cola. Además, la interfaz deque proporciona los siguientes métodos que se pueden utilizar para realizar varias operaciones con el objeto deque.
Resumamos estos métodos en la siguiente tabla.
Método | Prototipo de método | Descripción |
---|---|---|
getFirst | E getFirst () | Recupera el primer elemento del deque sin quitarlo. |
agregar | suma booleana (E e) | Agrega el elemento e dado al deque (en la cola) sin violar las restricciones de capacidad y devuelve verdadero si tiene éxito. Lanza IllegalStateException si no hay espacio disponible en la deque. |
addFirst | anular addFirst (E e) | Agrega el elemento e dado al principio de la cola sin violar las restricciones de capacidad. |
addLast | vacío addLast (E e) | Agrega el elemento e al último de la deque sin violar las restricciones de capacidad. |
contiene | booleano contiene (Objeto o) | Comprueba si el deque contiene el elemento o. Devuelve verdadero si es así. |
descendingIterator | Iterador descendingIterator () | Este método devuelve un iterador de orden inverso para la deque. |
elemento | Elemento E () | Devuelve el primer elemento o encabezado de la deque. Tenga en cuenta que no elimina el elemento. |
obtener ultimo | E getLast () | Obtiene el último elemento de la deque sin eliminarlo. |
iterador | Iterador iterador () | Devuelve un iterador estándar sobre los elementos de la deque. |
oferta | oferta booleana (E e) | Agrega el elemento e dado al deque (como una cola) sin violar las restricciones de capacidad. Devuelve verdadero en caso de éxito y falso en caso de error. |
oferta primero | oferta booleana Primero (E e) | Inserte el elemento dado e al frente de la placa sin violar las restricciones de capacidad. |
ofertaÚltima | oferta booleanaLast (E e) | Inserte el elemento dado e al final de la deque sin violar las restricciones de capacidad. |
ojeada | E mirar () | Devuelve el encabezado de la deque (primer elemento) o nulo si una cola está vacía. ** no borra la cabeza |
peekFirst | E peekFirst () | Devuelve el primer elemento de la deque sin eliminarlo. Devuelve nulo si el deque está vacío. |
peekLast | E peekLast () | Recupera el último elemento del deque sin quitarlo. Devuelve nulo si el deque está vacío. |
encuesta | Encuesta E () | Elimina y devuelve el encabezado del deque. Devuelve nulo si el deque está vacío. |
pollFirst | E pollFirst () | Devuelve y elimina el primer elemento de la deque. Devuelve nulo si el deque está vacío. |
pollLast | E pollLast () | Devuelve y elimina el último elemento de la deque. Devuelve nulo si el deque está vacío. |
pop | E pop () | Saque el elemento de la pila que se representa mediante deque. |
empujar | empuje vacío (E e) | Empuje el elemento e dado en la pila representada usando deque sin violar las restricciones de capacidad. Devuelve verdadero en caso de éxito o IllegalStateException si no hay espacio disponible en deque. |
retirar | E eliminar () | Retirar y devolver la cabeza del deque. |
retirar | boolean eliminar (Objeto o) | Elimina la primera aparición del elemento dado o del deque. |
removeFirst | E removeFirst () | Retire y devuelva el primer elemento de la deque. |
removeFirstOccurrence | booleano removeFirstOccurrence (Objeto o) | Elimina la primera aparición del elemento dado o del deque. |
removeLast | E removeLast () | Recupera y elimina el último elemento de la deque. |
removeLastOccurrence | booleano removeLastOccurrence (Objeto o) | Elimina la última aparición de un elemento dado o del deque. |
Talla | int tamaño () | Devuelve el tamaño o la cantidad de elementos de la deque. |
E implementación en Java
Implementemos ahora un programa Java para demostrar algunos de los principales métodos deque discutidos anteriormente.
En este programa, usamos una deque tipo String y luego agregamos elementos a esta deque usando varios métodos como add, addFirst, addLast, push, offer, offerFirst, etc. Luego mostramos la deque. A continuación, definimos los iteradores estándar e inverso para la deque y atravesamos la deque para imprimir los elementos.
También usamos otros métodos como contiene, pop, push, peek, poll, remove, etc.
|_+_|Producción:
Preguntas frecuentes
P # 1) ¿Deque es Java seguro para subprocesos?
Responder: ArrayDeque no es seguro para subprocesos. Pero la interfaz BlockingDeque en la clase java.util.concurrent representa el deque. Este deque es seguro para subprocesos.
Q #2) ¿Por qué Deque es más rápido que apilar?
Responder: La interfaz ArrayDeque que implementa la interfaz deque es eficiente en memoria, ya que no necesita realizar un seguimiento de los nodos anteriores o siguientes. Además, es una implementación de tamaño variable. Por tanto, deque es más rápido que la pila.
Q #3) ¿Deque es una pila?
Responder: Una deque es una cola de dos extremos. Permite el comportamiento LIFO y, por lo tanto, puede implementarse como una pila, aunque no es una pila.
Q #4) ¿Dónde se usa Deque?
Responder: Un deque se usa principalmente para implementar funciones como deshacer e historial.
P # 5) ¿Deque es circular?
Responder: Sí, Deque es circular.
Conclusión
Esto completa nuestro tutorial sobre la interfaz Deque en Java. La interfaz deque se implementa mediante una estructura de datos deque que es una colección que puede insertar y eliminar elementos de ambos extremos.
Las dos clases, es decir, ArrayDeque y LinkedList implementan la interfaz deque. Podemos usar estas clases para implementar la funcionalidad de la interfaz deque.
=> Visite aquí para ver la serie exclusiva de tutoriales de capacitación en Java.
Lectura recomendada
- Cola de doble final (Deque) en C ++ con ejemplos
- Cola de Java: métodos de cola, implementación de cola con ejemplos
- Tutorial de cola de prioridad de Java: implementación y ejemplos
- Estructura de datos de cola de prioridad en C ++ con ilustración
- Estructura de datos de cola en C ++ con ilustración
- Estructura de datos de cola circular C ++: implementación y aplicaciones
- Tutorial de JAVA para principiantes: más de 100 tutoriales prácticos en vídeo de Java
- Cola de prioridad en STL