En este tutorial, aprenderemos sobre la clase ArrayDeque y sus métodos con la ayuda de ejemplos. Además, aprenderemos a usar la eliminación de matriz para implementar una pila.

En Java, podemos usar la
ArrayDeque
clase para implementar estructuras de datos de cola y deque mediante matrices.Interfaces implementadas por ArrayDeque
La
ArrayDeque
clase implementa estas dos interfaces:- Interfaz de cola de Java
- Interfaz Java Deque

Creando ArrayDeque
Para crear una calcomanía de matriz, debemos importar el
java.util.ArrayDeque
paquete.
Así es como podemos crear una matriz de deque en Java:
ArrayDeque<Type> animal = new ArrayDeque<>();
Aquí, Tipo indica el tipo de deque de matriz. Por ejemplo,
// Creating String type ArrayDeque
ArrayDeque<String> animals = new ArrayDeque<>();
// Creating Integer type ArrayDeque
ArrayDeque<Integer> age = new ArrayDeque<>();
Métodos de ArrayDeque
La
ArrayDeque
clase proporciona implementaciones para todos los métodos presentes en Queue
y Deque
de la interfaz.Insertar elementos para eliminar
1. Agregue elementos usando add (), addFirst () y addLast ()
add()
- inserta el elemento especificado al final de la eliminación de matrizaddFirst()
- inserta el elemento especificado al comienzo de la eliminación de matrizaddLast()
- inserta el especificado al final de la matriz deque (equivalente aadd()
)
Nota: Si la matriz es deque completos, todos estos métodos
add()
, addFirst()
y la addLast()
lanza IllegalStateException
.
Por ejemplo,
import java.util.ArrayDeque;
class Main {
public static void main(String[] args) {
ArrayDeque<String> animals= new ArrayDeque<>();
// Using add()
animals.add("Dog");
// Using addFirst()
animals.addFirst("Cat");
// Using addLast()
animals.addLast("Horse");
System.out.println("ArrayDeque: " + animals);
}
}
Salida
ArrayDeque: [Gato, Perro, Caballo]
2. Inserte elementos usando offer (), offerFirst () y offerLast ()
offer()
- inserta el elemento especificado al final de la eliminación de matrizofferFirst()
- inserta el elemento especificado al comienzo de la eliminación de matrizofferLast()
- inserta el elemento especificado al final de la eliminación de matriz
Nota:
offer()
, offerFirst()
y offerLast()
regresa true
si el elemento se inserta con éxito; si la matriz deque está llena, estos métodos regresan false
.
Por ejemplo,
import java.util.ArrayDeque;
class Main {
public static void main(String[] args) {
ArrayDeque<String> animals= new ArrayDeque<>();
// Using offer()
animals.offer("Dog");
// Using offerFirst()
animals.offerFirst("Cat");
// Using offerLast()
animals.offerLast("Horse");
System.out.println("ArrayDeque: " + animals);
}
}
Salida
ArrayDeque: [Gato, Perro, Caballo]
Nota: Si la matriz de deque está llena
- el
add()
método arrojará una excepción - el
offer()
método devuelvefalse
Acceder a elementos de ArrayDeque
1. Acceda a elementos usando getFirst () y getLast ()
getFirst()
- devuelve el primer elemento de la matriz dequegetLast()
- devuelve el último elemento de la matriz deque
Nota: Si la matriz deque está vacía,
getFirst()
y getLast()
arroja NoSuchElementException
.
Por ejemplo,
import java.util.ArrayDeque;
class Main {
public static void main(String[] args) {
ArrayDeque<String> animals= new ArrayDeque<>();
animals.add("Dog");
animals.add("Cat");
animals.add("Horse");
System.out.println("ArrayDeque: " + animals);
// Get the first element
String firstElement = animals.getFirst();
System.out.println("First Element: " + firstElement);
// Get the last element
String lastElement = animals.getLast();
System.out.println("Last Element: " + lastElement);
}
}
Salida
ArrayDeque: [Perro, Gato, Caballo] Primer elemento: perro Último elemento: caballo
2. Acceda a los elementos utilizando el método peek (), peekFirst () y peekLast ()
peek()
- devuelve el primer elemento de la matriz dequepeekFirst()
- devuelve el primer elemento de la matriz deque (equivalente apeek()
)peekLast()
- devuelve el último elemento de la matriz deque
Por ejemplo,
import java.util.ArrayDeque;
class Main {
public static void main(String[] args) {
ArrayDeque<String> animals= new ArrayDeque<>();
animals.add("Dog");
animals.add("Cat");
animals.add("Horse");
System.out.println("ArrayDeque: " + animals);
// Using peek()
String element = animals.peek();
System.out.println("Head Element: " + element);
// Using peekFirst()
String firstElement = animals.peekFirst();
System.out.println("First Element: " + firstElement);
// Using peekLast
String lastElement = animals.peekLast();
System.out.println("Last Element: " + lastElement);
}
}
Salida
ArrayDeque: [Perro, Gato, Caballo] Elemento principal: perro Primer elemento: perro Último elemento: caballo
Nota: Si la matriz de deque está vacía
peek()
, peekFirst()
y getLast()
arroja NoSuchElementException
.Eliminar elementos de ArrayDeque
1. Eliminar elementos usando el método remove (), removeFirst (), removeLast ()
remove()
- devuelve y elimina un elemento del primer elemento de la matriz dequeremove(element)
- devuelve y elimina el elemento especificado de la cabeza de la matriz dequeremoveFirst()
- devuelve y elimina el primer elemento de la matriz deque (equivalente aremove()
)removeLast()
- devuelve y elimina el último elemento de la matriz deque
Nota: Si la matriz deque está vacía
remove()
, removeFirst()
y el removeLast()
método arroja una excepción. Además, remove(element)
lanza una excepción si no se encuentra el elemento.
Por ejemplo,
import java.util.ArrayDeque;
class Main {
public static void main(String[] args) {
ArrayDeque<String> animals= new ArrayDeque<>();
animals.add("Dog");
animals.add("Cat");
animals.add("Cow");
animals.add("Horse");
System.out.println("ArrayDeque: " + animals);
// Using remove()
String element = animals.remove();
System.out.println("Removed Element: " + element);
System.out.println("New ArrayDeque: " + animals);
// Using removeFirst()
String firstElement = animals.removeFirst();
System.out.println("Removed First Element: " + firstElement);
// Using removeLast()
String lastElement = animals.removeLast();
System.out.println("Removed Last Element: " + lastElement);
}
}
Salida
ArrayDeque: [Perro, Gato, Vaca, Caballo] Elemento eliminado: perro Nueva ArrayDeque: [Cat, Cow, Horse] Primer elemento eliminado: Gato Último elemento eliminado: caballo
2. Elimine elementos utilizando el método poll (), pollFirst () y pollLast ()
poll()
- devuelve y elimina el primer elemento de la matriz dequepollFirst()
- devuelve y elimina el primer elemento de la matriz deque (equivalente apoll()
)pollLast()
- devuelve y elimina el último elemento de la matriz de deque
Nota: Si la matriz deque está vacía
poll()
, pollFirst()
y pollLast()
regresa null
si no se encuentra el elemento.
Por ejemplo,
import java.util.ArrayDeque;
class Main {
public static void main(String[] args) {
ArrayDeque<String> animals= new ArrayDeque<>();
animals.add("Dog");
animals.add("Cat");
animals.add("Cow");
animals.add("Horse");
System.out.println("ArrayDeque: " + animals);
// Using poll()
String element = animals.poll();
System.out.println("Removed Element: " + element);
System.out.println("New ArrayDeque: " + animals);
// Using pollFirst()
String firstElement = animals.pollFirst();
System.out.println("Removed First Element: " + firstElement);
// Using pollLast()
String lastElement = animals.pollLast();
System.out.println("Removed Last Element: " + lastElement);
}
}
Salida
ArrayDeque: [Perro, Gato, Vaca, Caballo] Elemento eliminado: perro Nueva ArrayDeque: [Cat, Cow, Horse] Primer elemento eliminado: Gato Último elemento eliminado: caballo
3. Eliminar Elemento: usando el método clear ()
Para eliminar todos los elementos de la matriz deque, usamos el
clear()
método Por ejemplo,
import java.util.ArrayDeque;
class Main {
public static void main(String[] args) {
ArrayDeque<String> animals= new ArrayDeque<>();
animals.add("Dog");
animals.add("Cat");
animals.add("Horse");
System.out.println("ArrayDeque: " + animals);
// Using clear()
animals.clear();
System.out.println("New ArrayDeque: " + animals);
}
}
Salida
ArrayDeque: [Perro, Gato, Caballo] Nueva ArrayDeque: []
Iterando la matriz
iterator()
- devuelve un iterador que se puede usar para iterar sobre la eliminación de matrizdescendingIterator()
- devuelve un iterador que se puede utilizar para iterar sobre la eliminación de matriz en orden inverso
Para utilizar estos métodos, debemos importar el
java.util.Iterator
paquete. Por ejemplo,
import java.util.ArrayDeque;
import java.util.Iterator;
class Main {
public static void main(String[] args) {
ArrayDeque<String> animals= new ArrayDeque<>();
animals.add("Dog");
animals.add("Cat");
animals.add("Horse");
System.out.print("ArrayDeque: ");
// Using iterator()
Iterator<String> iterate = animals.iterator();
while(iterate.hasNext()) {
System.out.print(iterate.next());
System.out.print(", ");
}
System.out.print("\nArrayDeque in reverse order: ");
// Using descendingIterator()
Iterator<String> desIterate = animals.descendingIterator();
while(desIterate.hasNext()) {
System.out.print(desIterate.next());
System.out.print(", ");
}
}
}
Salida
ArrayDeque: [Perro, Gato, Caballo] ArrayDeque en orden inverso: [Caballo, Gato, Perro]
Otros metodos
Métodos | Descripciones |
---|---|
element() | Devuelve un elemento del encabezado de la matriz deque. |
contains(element) | Busca en la matriz de deque el elemento especificado. Si se encuentra el elemento, devuelve verdadero, si no devuelve falso. |
size() | Devuelve la longitud de la matriz deque. |
toArray() | Convierte la deque de matriz en matriz y la devuelve. |
clone()
| Crea una copia de la matriz de deque y la devuelve. |
ArrayDeque como una pila
Para implementar una pila LIFO (Último en entrar, primero en salir) en Java, se recomienda usar un deque sobre la clase Stack . La
ArrayDeque
clase es probable que sea más rápido que el Stack
de clase.ArrayDeque
proporciona los siguientes métodos que se pueden usar para implementar una pila.push()
- agrega un elemento a la parte superior de la pilapeek()
- devuelve un elemento desde la parte superior de la pilapop()
- devuelve y elimina un elemento de la parte superior de la pila
Por ejemplo,
import java.util.ArrayDeque;
class Main {
public static void main(String[] args) {
ArrayDeque<String> stack = new ArrayDeque<>();
// Add elements to stack
stack.push("Dog");
stack.push("Cat");
stack.push("Horse");
System.out.println("Stack: " + stack);
// Access element from top of stack
String element = stack.peek();
System.out.println("Accessed Element: " + element);
// Remove elements from top of stack
String remElement = stack.pop();
System.out.println("Removed element: " + remElement);
}
}
Salida
Pila: [Caballo, Gato, Perro] Elemento al que se accede: caballo Elemento eliminado: caballo
ArrayDeque vs. Clase LinkedList
Ambos
ArrayDeque
y Java LinkedList implementan la Deque
interfaz. Sin embargo, existen algunas diferencias entre ellos.LinkedList
admitenull
elementos, mientrasArrayDeque
que no.- Cada nodo en una lista vinculada incluye enlaces a otros nodos. Es por eso que
LinkedList
requiere más almacenamiento queArrayDeque
. - Si está implementando la cola o la estructura de datos de deque,
ArrayDeque
es probable que una sea más rápida que aLinkedList
.
0 Comentarios
Dejanos tu comentario para seguir mejorando!