Java Deque

En este tutorial, aprenderemos sobre la interfaz de Deque, cómo usarla y sus métodos.

La Dequeinterfaz del marco de colecciones de Java proporciona la funcionalidad de una cola de dos extremos. Extiende la Queueinterfaz.

Trabajo de Deque

En una cola normal, los elementos se agregan desde atrás y se eliminan desde el frente. Sin embargo, en una deque, podemos insertar y quitar elementos tanto de la parte delantera como de la trasera .

Clases que implementan Deque

Para usar las funcionalidades de la Dequeinterfaz, necesitamos usar clases que la implementen:

  • ArrayDeque
  • Lista enlazada

¿Cómo usar Deque?

En Java, debemos importar el java.util.Dequepaquete a utilizar Deque.

 // Array implementation of Deque Deque animal1 = new ArrayDeque(); // LinkedList implementation of Deque Deque animal2 = new LinkedList(); 

Aquí, hemos creado los objetos animal1 y animal2 de las clases ArrayDeque y LinkedList, respectivamente. Estos objetos pueden utilizar las funcionalidades de la Dequeinterfaz.

Métodos de Deque

Dado que Dequeextiende la Queueinterfaz, hereda todos los métodos de la interfaz de cola.

Además de los métodos disponibles en la Queueinterfaz, la Dequeinterfaz también incluye los siguientes métodos:

  • addFirst () : agrega el elemento especificado al comienzo de la deque. Lanza una excepción si el deque está lleno.
  • addLast () : agrega el elemento especificado al final de la deque. Lanza una excepción si el deque está lleno.
  • offerFirst () : agrega el elemento especificado al comienzo de la deque. Devuelve falsesi el deque está lleno.
  • offerLast () : agrega el elemento especificado al final de la deque. Devuelve falsesi el deque está lleno.
  • getFirst () : devuelve el primer elemento de la deque. Lanza una excepción si el deque está vacío.
  • getLast () : devuelve el último elemento de la deque. Lanza una excepción si el deque está vacío.
  • peekFirst () : devuelve el primer elemento de la deque. Devuelve nullsi el deque está vacío.
  • peekLast () : devuelve el último elemento de la deque. Devuelve nullsi el deque está vacío.
  • removeFirst () : devuelve y elimina el primer elemento de la deque. Lanza una excepción si el deque está vacío.
  • removeLast () : devuelve y elimina el último elemento de la deque. Lanza una excepción si el deque está vacío.
  • pollFirst () : devuelve y elimina el primer elemento de la deque. Devuelve nullsi el deque está vacío.
  • pollLast () : devuelve y elimina el último elemento de la deque. Devuelve nullsi el deque está vacío.

Deque como estructura de datos de pila

La Stackclase del Collectionsmarco de Java proporciona la implementación de la pila.

Sin embargo, se recomienda utilizarlo Dequecomo una pila en lugar de la clase Pila. Es porque los métodos de Stackestán sincronizados.

Estos son los métodos Dequeque proporciona la interfaz para implementar la pila:

  • push() - agrega un elemento al comienzo de deque
  • pop() - elimina un elemento del comienzo de deque
  • peek() - devuelve un elemento del comienzo de deque

Implementación de Deque en la clase ArrayDeque

 import java.util.Deque; import java.util.ArrayDeque; class Main ( public static void main(String() args) ( // Creating Deque using the ArrayDeque class Deque numbers = new ArrayDeque(); // add elements to the Deque numbers.offer(1); numbers.offerLast(2); numbers.offerFirst(3); System.out.println("Deque: " + numbers); // Access elements of the Deque int firstElement = numbers.peekFirst(); System.out.println("First Element: " + firstElement); int lastElement = numbers.peekLast(); System.out.println("Last Element: " + lastElement); // Remove elements from the Deque int removedNumber1 = numbers.pollFirst(); System.out.println("Removed First Element: " + removedNumber1); int removedNumber2 = numbers.pollLast(); System.out.println("Removed Last Element: " + removedNumber2); System.out.println("Updated Deque: " + numbers); ) ) 

Salida

 Deque: (3, 1, 2) Primer elemento: 3 Último elemento: 2 Eliminado Primer elemento: 3 Eliminado Último elemento: 2 Deque actualizado: (1) 

Para obtener más información, visite Java ArrayDeque.

Articulos interesantes...