Estructura 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
1Deque<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
123456789101112131415package 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
1234567891011121314151617package 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
123456789101112131415161718package 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
123456789101112131415package 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 retornatrue. Retornafalsesi no es posible agregarlo;offerLast(E e): agrega un elemento al final del deque, si es posible, y retornatrue. Retornafalsesi no es posible agregarlo;push(E e): agrega un elemento al inicio del deque, similar aaddFirst(). Ten en cuenta quepush()también es un método de pila en la claseDeque.
Métodos para eliminar un elemento del deque:
pollFirst(): elimina y retorna el primer elemento del deque. Retornanullsi el deque está vacío;pollLast(): elimina y retorna el último elemento del deque. Retornanullsi el deque está vacío;pop(): elimina y retorna el primer elemento del deque, similar aremoveFirst().
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?
¡Gracias por tus comentarios!
Pregunte a AI
Pregunte a AI
Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla
Genial!
Completion tasa mejorada a 4
Estructura 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
1Deque<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
123456789101112131415package 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
1234567891011121314151617package 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
123456789101112131415161718package 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
123456789101112131415package 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 retornatrue. Retornafalsesi no es posible agregarlo;offerLast(E e): agrega un elemento al final del deque, si es posible, y retornatrue. Retornafalsesi no es posible agregarlo;push(E e): agrega un elemento al inicio del deque, similar aaddFirst(). Ten en cuenta quepush()también es un método de pila en la claseDeque.
Métodos para eliminar un elemento del deque:
pollFirst(): elimina y retorna el primer elemento del deque. Retornanullsi el deque está vacío;pollLast(): elimina y retorna el último elemento del deque. Retornanullsi el deque está vacío;pop(): elimina y retorna el primer elemento del deque, similar aremoveFirst().
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?
¡Gracias por tus comentarios!