Dominando la Interfaz Deque de Java: Características, Métodos y Ejemplos Prácticos
Interfaz Deque de Java
Descubre cómo la interfaz Deque de Java proporciona una cola de doble extremo versátil y aprende a aprovechar sus potentes métodos en código real.
Cómo Funciona Deque
A diferencia de una cola convencional, que solo encola en el final y desencola del frente, un Deque (cola de doble extremo) te permite añadir y eliminar elementos desde ambos extremos. Esta flexibilidad la hace ideal para patrones LIFO, FIFO y manejo de datos más complejos.

Clases que Implementan Deque
Para trabajar con un Deque, elige una de las siguientes implementaciones concretas:
ArrayDeque– array redimensionable que ofrece acceso rápido, no sincronizado.LinkedList– lista doblemente enlazada que soporta elementos null y proporciona rendimiento robusto de inserción.

Usando Deque en Tu Código
Primero, importa la interfaz:
import java.util.Deque;
Luego instancia una clase concreta:
// Implementación con Array
Deque<String> animal1 = new ArrayDeque<>();
// Implementación con LinkedList
Deque<String> animal2 = new LinkedList<>();
Estos objetos ahora exponen todas las operaciones de Deque.
Métodos Clave de Deque
Como Deque extiende Queue, hereda todos los métodos de cola. Además, proporciona operaciones especializadas para ambos extremos:
- addFirst(e) – Inserta
eal frente, lanzando excepción si el deque está lleno. - addLast(e) – Añade
eal final, lanzando excepción si está lleno. - offerFirst(e) – Intenta insertar al frente, devolviendo
falsesi está lleno. - offerLast(e) – Intenta añadir al final, devolviendo
falsesi está lleno. - getFirst() / getLast() – Recupera el primer/último elemento, lanzando excepción si el deque está vacío.
- peekFirst() / peekLast() – Recupera el primer/último elemento, devolviendo
nullcuando está vacío. - removeFirst() / removeLast() – Elimina y devuelve el primer/último elemento, lanzando excepción cuando está vacío.
- pollFirst() / pollLast() – Elimina y devuelve el primer/último elemento, devolviendo
nullsi está vacío.
Deque como Pila (Stack)
La clase heredada Stack es sincronizada y menos eficiente. Deque ofrece una alternativa moderna, no sincronizada:
push(e)– Añadeeal frente.pop()– Elimina y devuelve el elemento del frente.peek()– Recupera el elemento del frente sin eliminarlo.
Ejemplo Práctico con ArrayDeque
import java.util.Deque;
import java.util.ArrayDeque;
class Main {
public static void main(String[] args) {
Deque<Integer> numeros = new ArrayDeque<>();
// Poblar el deque
numeros.offer(1); // cola
numeros.offerLast(2); // cola
numeros.offerFirst(3); // cabeza
System.out.println("Deque: " + numeros);
// Ver ambos extremos
System.out.println("Primer Elemento: " + numeros.peekFirst());
System.out.println("Último Elemento: " + numeros.peekLast());
// Eliminar elementos
System.out.println("Primer Elemento Eliminado: " + numeros.pollFirst());
System.out.println("Último Elemento Eliminado: " + numeros.pollLast());
System.out.println("Deque Actualizado: " + numeros);
}
}
Salida
Deque: [3, 1, 2] Primer Elemento: 3 Último Elemento: 2 Primer Elemento Eliminado: 3 Último Elemento Eliminado: 2 Deque Actualizado: [1]
Para más detalles, explora la documentación oficial de Java ArrayDeque.
Java
- Dominando las Interfaces en C#: Definición, Implementación y Casos de Uso Prácticos
- Interfaces en C#: Contratos de diseño para POO robusta
- Dominar Operadores en Java: Tipos, Sintaxis y Ejemplos Prácticos
- Dominando interfaces en Java: Conceptos, implementación y mejores prácticas
- Dominando Try‑with‑Resources en Java: Gestión automática de recursos explicada
- Anotaciones en Java explicadas: Tipos, ubicación y ejemplos prácticos
- Dominando la Interfaz NavigableSet de Java: Navegación, Ordenación y Ejemplos Prácticos
- Dominando Expresiones Lambda en Java: Desde Básicos hasta Stream API
- Interfaz vs Clase Abstracta en Java: Cómo elegir la abstracción correcta
- Entendiendo las Interfaces en Java: Definiciones, Usos y Buenas Prácticas
- Java 9 Métodos Privados en Interfaces: Mejorar Encapsulamiento y Reutilización de Código