Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprende Estructura de Datos Deque en Java | Estructuras de Datos Avanzadas en Java
Practice
Projects
Quizzes & Challenges
Quizzes
Challenges
/
Estructuras de Datos en Java

bookEstructura de Datos Deque en Java

Cola de Doble Extremo

Deque, o cola de doble extremo, permite trabajar con colas tanto desde el frente como desde la parte posterior.

La interfaz Deque extiende la interfaz Queue, por lo que una clase como LinkedList también implementa esta interfaz.

Por lo tanto, nuevamente utilizará LinkedList, pero esta vez con una nueva interfaz.

Declarar un objeto con el tipo Deque no es diferente de Queue:

Main.java

Main.java

copy
1
Deque<T> deque = new LinkedList<>();

La principal diferencia se manifiesta al analizar los métodos de esta interfaz.

Dado que un Deque es una cola de doble extremo, lo que significa que se puede trabajar con elementos tanto al principio como al final de la cola, sus métodos están adaptados a esta característica.

Métodos

Algunos métodos clave de la interfaz Deque son:

  • addFirst(element): agrega un elemento al inicio del deque;
  • addLast(element): agrega un elemento al final del deque.

Evidentemente, en un deque, existen métodos para agregar al inicio y al final. Los nombres de estos métodos son autoexplicativos. Veamos estos métodos en código:

Main.java

Main.java

copy
123456789101112131415
package com.example; import java.util.Deque; import java.util.LinkedList; public class Main { public static void main(String[] args) { Deque<String> deque = new LinkedList<>(); deque.addFirst("One"); deque.addLast("Two"); System.out.println("Deque: " + deque); deque.addFirst("Zero"); System.out.println("Deque after the `addFirst()` method: " + deque); } }

Como puedes observar, después de utilizar el método addFirst(), el elemento se añadió al inicio del deque. Esto lo diferencia del método addLast().

Deque también dispone de un método add(), que funciona igual que el método addLast(). Por lo tanto, la elección de qué método utilizar depende completamente de ti.

Métodos de eliminación

Si existen métodos para añadir elementos al inicio y al final, también deben existir métodos para eliminar desde el inicio y el final del deque.

  • removeFirst(): elimina y retorna el elemento desde el inicio del deque;
  • removeLast(): elimina y retorna el elemento desde el final del deque.

Los métodos addFirst() y addLast() realizan la eliminación de elementos desde el inicio y el final del deque.

Veamos un ejemplo de uso en el código:

Main.java

Main.java

copy
1234567891011121314151617
package com.example; import java.util.Deque; import java.util.LinkedList; public class Main { public static void main(String[] args) { Deque<String> deque = new LinkedList<>(); deque.add("One"); deque.add("Second"); deque.add("Third"); System.out.println("Deque: " + deque); deque.removeFirst(); deque.removeLast(); System.out.println("Deque after the removal methods method: " + deque); } }

Como puedes ver, eliminamos el primer y el último elemento del deque, dejando solo el segundo elemento.

Es simple y conveniente, y los nombres de los métodos hablan por sí mismos.

Métodos de Recuperación

A continuación, pasemos a los métodos para acceder a los elementos en un deque.

  • getFirst(): recupera, pero no elimina, el elemento al frente del deque;
  • getLast(): recupera, pero no elimina, el elemento al final del deque.

Esto nos permite acceder a los primeros y últimos elementos en una cola doblemente terminada.

Ahora, veamos un ejemplo en código:

Main.java

Main.java

copy
123456789101112131415161718
package com.example; import java.util.Deque; import java.util.LinkedList; public class Main { public static void main(String[] args) { Deque<String> deque = new LinkedList<>(); deque.add("One"); deque.add("Second"); deque.add("Third"); System.out.println("Deque: " + deque); String first = deque.getFirst(); String last = deque.getLast(); System.out.println("The first element in the deque: " + first); System.out.println("The last element in the deque: " + last); } }

Mediante los métodos getFirst() y getLast(), se recuperaron los primeros y últimos elementos del deque y se asignaron a variables recién creadas.

En la interfaz Deque, también existen los métodos peekFirst() y peekLast(), que abordan el problema de lanzar una excepción. En lugar de lanzar una excepción y detener el programa, devuelven null si la cola está vacía.

Veamos un ejemplo:

Main.java

Main.java

copy
123456789101112131415
package com.example; import java.util.Deque; import java.util.LinkedList; public class Main { public static void main(String[] args) { Deque<String> deque = new LinkedList<>(); System.out.println("Deque: " + deque); String first = deque.peekFirst(); System.out.println("The first element in the deque: " + first); String last = deque.getLast(); System.out.println("The last element in the deque: " + last); } }

A partir de este ejemplo, se hizo evidente que es mucho mejor utilizar los métodos peekFirst() y peekLast() en lugar de getFirst() y getLast(), ya que no detendrán el programa en caso de error.

Sin embargo, ¡no olvides la NullPointerException! Esta excepción puede causar muchos problemas en tu programa.

También existen métodos alternativos equivalentes para los métodos addFirst(), addLast(), removeFirst() y removeLast(). No profundizaremos mucho en ellos, ya que ya comprendes cómo funcionan estos métodos, pero aquí tienes la lista:

Métodos Alternativos

Métodos para agregar un elemento al deque:

  • offerFirst(E e): agrega un elemento al inicio del deque, si es posible, y retorna true. Retorna false si no es posible agregarlo;
  • offerLast(E e): agrega un elemento al final del deque, si es posible, y retorna true. Retorna false si no es posible agregarlo;
  • push(E e): agrega un elemento al inicio del deque, similar a addFirst(). Ten en cuenta que push() también es un método de pila en la clase Deque.

Métodos para eliminar un elemento del deque:

  • pollFirst(): elimina y retorna el primer elemento del deque. Retorna null si el deque está vacío;
  • pollLast(): elimina y retorna el último elemento del deque. Retorna null si el deque está vacío;
  • pop(): elimina y retorna el primer elemento del deque, similar a removeFirst().

La elección depende de los requisitos del programa. Siempre puedes resolver todo con un arreglo regular, pero sería bastante complicado y no estaría optimizado. Por eso existen tantas estructuras de datos diferentes: para facilitar la escritura de diversos programas.

1. ¿Qué significa "Deque"?

2. ¿Qué interfaz en Java representa un Deque?

3. ¿Cuál es el propósito del método addFirst() en un Deque?

4. ¿Qué método se utiliza para recuperar, pero no eliminar, el último elemento de un Deque?

question mark

¿Qué significa "Deque"?

Select the correct answer

question mark

¿Qué interfaz en Java representa un Deque?

Select the correct answer

question mark

¿Cuál es el propósito del método addFirst() en un Deque?

Select the correct answer

question mark

¿Qué método se utiliza para recuperar, pero no eliminar, el último elemento de un Deque?

Select the correct answer

¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 2. Capítulo 2

Pregunte a AI

expand

Pregunte a AI

ChatGPT

Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla

bookEstructura de Datos Deque en Java

Desliza para mostrar el menú

Cola de Doble Extremo

Deque, o cola de doble extremo, permite trabajar con colas tanto desde el frente como desde la parte posterior.

La interfaz Deque extiende la interfaz Queue, por lo que una clase como LinkedList también implementa esta interfaz.

Por lo tanto, nuevamente utilizará LinkedList, pero esta vez con una nueva interfaz.

Declarar un objeto con el tipo Deque no es diferente de Queue:

Main.java

Main.java

copy
1
Deque<T> deque = new LinkedList<>();

La principal diferencia se manifiesta al analizar los métodos de esta interfaz.

Dado que un Deque es una cola de doble extremo, lo que significa que se puede trabajar con elementos tanto al principio como al final de la cola, sus métodos están adaptados a esta característica.

Métodos

Algunos métodos clave de la interfaz Deque son:

  • addFirst(element): agrega un elemento al inicio del deque;
  • addLast(element): agrega un elemento al final del deque.

Evidentemente, en un deque, existen métodos para agregar al inicio y al final. Los nombres de estos métodos son autoexplicativos. Veamos estos métodos en código:

Main.java

Main.java

copy
123456789101112131415
package com.example; import java.util.Deque; import java.util.LinkedList; public class Main { public static void main(String[] args) { Deque<String> deque = new LinkedList<>(); deque.addFirst("One"); deque.addLast("Two"); System.out.println("Deque: " + deque); deque.addFirst("Zero"); System.out.println("Deque after the `addFirst()` method: " + deque); } }

Como puedes observar, después de utilizar el método addFirst(), el elemento se añadió al inicio del deque. Esto lo diferencia del método addLast().

Deque también dispone de un método add(), que funciona igual que el método addLast(). Por lo tanto, la elección de qué método utilizar depende completamente de ti.

Métodos de eliminación

Si existen métodos para añadir elementos al inicio y al final, también deben existir métodos para eliminar desde el inicio y el final del deque.

  • removeFirst(): elimina y retorna el elemento desde el inicio del deque;
  • removeLast(): elimina y retorna el elemento desde el final del deque.

Los métodos addFirst() y addLast() realizan la eliminación de elementos desde el inicio y el final del deque.

Veamos un ejemplo de uso en el código:

Main.java

Main.java

copy
1234567891011121314151617
package com.example; import java.util.Deque; import java.util.LinkedList; public class Main { public static void main(String[] args) { Deque<String> deque = new LinkedList<>(); deque.add("One"); deque.add("Second"); deque.add("Third"); System.out.println("Deque: " + deque); deque.removeFirst(); deque.removeLast(); System.out.println("Deque after the removal methods method: " + deque); } }

Como puedes ver, eliminamos el primer y el último elemento del deque, dejando solo el segundo elemento.

Es simple y conveniente, y los nombres de los métodos hablan por sí mismos.

Métodos de Recuperación

A continuación, pasemos a los métodos para acceder a los elementos en un deque.

  • getFirst(): recupera, pero no elimina, el elemento al frente del deque;
  • getLast(): recupera, pero no elimina, el elemento al final del deque.

Esto nos permite acceder a los primeros y últimos elementos en una cola doblemente terminada.

Ahora, veamos un ejemplo en código:

Main.java

Main.java

copy
123456789101112131415161718
package com.example; import java.util.Deque; import java.util.LinkedList; public class Main { public static void main(String[] args) { Deque<String> deque = new LinkedList<>(); deque.add("One"); deque.add("Second"); deque.add("Third"); System.out.println("Deque: " + deque); String first = deque.getFirst(); String last = deque.getLast(); System.out.println("The first element in the deque: " + first); System.out.println("The last element in the deque: " + last); } }

Mediante los métodos getFirst() y getLast(), se recuperaron los primeros y últimos elementos del deque y se asignaron a variables recién creadas.

En la interfaz Deque, también existen los métodos peekFirst() y peekLast(), que abordan el problema de lanzar una excepción. En lugar de lanzar una excepción y detener el programa, devuelven null si la cola está vacía.

Veamos un ejemplo:

Main.java

Main.java

copy
123456789101112131415
package com.example; import java.util.Deque; import java.util.LinkedList; public class Main { public static void main(String[] args) { Deque<String> deque = new LinkedList<>(); System.out.println("Deque: " + deque); String first = deque.peekFirst(); System.out.println("The first element in the deque: " + first); String last = deque.getLast(); System.out.println("The last element in the deque: " + last); } }

A partir de este ejemplo, se hizo evidente que es mucho mejor utilizar los métodos peekFirst() y peekLast() en lugar de getFirst() y getLast(), ya que no detendrán el programa en caso de error.

Sin embargo, ¡no olvides la NullPointerException! Esta excepción puede causar muchos problemas en tu programa.

También existen métodos alternativos equivalentes para los métodos addFirst(), addLast(), removeFirst() y removeLast(). No profundizaremos mucho en ellos, ya que ya comprendes cómo funcionan estos métodos, pero aquí tienes la lista:

Métodos Alternativos

Métodos para agregar un elemento al deque:

  • offerFirst(E e): agrega un elemento al inicio del deque, si es posible, y retorna true. Retorna false si no es posible agregarlo;
  • offerLast(E e): agrega un elemento al final del deque, si es posible, y retorna true. Retorna false si no es posible agregarlo;
  • push(E e): agrega un elemento al inicio del deque, similar a addFirst(). Ten en cuenta que push() también es un método de pila en la clase Deque.

Métodos para eliminar un elemento del deque:

  • pollFirst(): elimina y retorna el primer elemento del deque. Retorna null si el deque está vacío;
  • pollLast(): elimina y retorna el último elemento del deque. Retorna null si el deque está vacío;
  • pop(): elimina y retorna el primer elemento del deque, similar a removeFirst().

La elección depende de los requisitos del programa. Siempre puedes resolver todo con un arreglo regular, pero sería bastante complicado y no estaría optimizado. Por eso existen tantas estructuras de datos diferentes: para facilitar la escritura de diversos programas.

1. ¿Qué significa "Deque"?

2. ¿Qué interfaz en Java representa un Deque?

3. ¿Cuál es el propósito del método addFirst() en un Deque?

4. ¿Qué método se utiliza para recuperar, pero no eliminar, el último elemento de un Deque?

question mark

¿Qué significa "Deque"?

Select the correct answer

question mark

¿Qué interfaz en Java representa un Deque?

Select the correct answer

question mark

¿Cuál es el propósito del método addFirst() en un Deque?

Select the correct answer

question mark

¿Qué método se utiliza para recuperar, pero no eliminar, el último elemento de un Deque?

Select the correct answer

¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 2. Capítulo 2
some-alt