Tabla de contenido
1. El concepto de Deque
Cola bidireccional: admite una colección lineal de elementos insertados y eliminados al principio y al final. Tiene características FIFO (primero en entrar, primero en salir) y LIFO (último en entrar, primero en salir), es decir, es una cola y una pila ; el
documento oficial de Java recomienda usar deque para implementar la pila (pila).
En Java, la clase de implementación de Queue generalmente usa LinkedList.
Características:
- 1. Las operaciones de inserción, eliminación y obtención admiten dos formas: falla rápida y devuelven nulo o verdadero / falso.
- 2. Tiene características FIFO y LIFO, que es tanto una cola como una pila.
- 3. No se recomienda insertar un elemento nulo, nulo ya que un valor de retorno específico indica que la cola está vacía
- 4. Equals indefinidos y hashCode basados en la igualdad de elementos
2. Operación deque
Insertar elemento
Nombre del método | descripción |
---|---|
addFirst () | Inserte un elemento al principio de la línea, si el elemento está vacío, se produce una excepción de puntero nulo |
addLast () | Inserte un elemento al final de la cola, si está vacío, se produce una excepción de puntero nulo |
offerFirst () | Inserte un elemento al principio de la línea, si la inserción es exitosa, devuelva verdadero, de lo contrario devuelva falso |
addLast () | Inserte un elemento al final de la línea, si la inserción es exitosa, devuelva verdadero, de lo contrario devuelva falso |
Eliminar elemento
Nombre del método | descripción |
---|---|
removeFirst () | Devuelve y elimina el elemento principal. Si el elemento es nulo, se producirá una excepción NoSuchElementException |
removeLast () | Devuelve y elimina el elemento de cola. Si el elemento es nulo, se producirá una NoSuchElementException |
offerFirst () | Devuelve y elimina el elemento principal, si no hay ningún elemento en la cola, devuelve nulo |
pollLast () | Devuelve y elimina el elemento de cola, si no hay ningún elemento en la cola, devuelve nulo |
Obtener elemento
Nombre del método | descripción |
---|---|
getFirst () | Obtenga el elemento principal de la cola, pero no lo elimine. Si no hay ningún elemento en la cola, se producirá una NoSuchElementException |
obtener ultimo() | Obtenga el elemento de cola pero no lo elimine. Si no hay ningún elemento en la cola, se producirá NoSuchElementException |
peekFirst () | Obtenga el elemento principal de la cola pero no lo elimine, si no hay ningún elemento en la cola, devuelva nulo |
peekLast () | Obtenga el elemento de cola pero no lo elimine, si no hay ningún elemento en la cola, devuelva nulo |
Operación de pila
Nombre del método | descripción |
---|---|
música pop() | Hacer estallar elementos en la pila, es decir, devolver y eliminar el elemento principal, es equivalente a removeFirst (), si no hay ningún elemento en la cola, se producirá una NoSuchElementException |
empujar() | Empujar elementos en la pila, es decir, agregar elementos al encabezado de la línea, es equivalente a addFirst (), si el elemento es nulo, ocurre NPE, y si el espacio de la pila es limitado, ocurre IllegalStateException |
Juzgado como condición vacía
Nombre del método | descripción |
---|---|
esta vacio() | Para comprobar si este deque está "vacío" o "no vacío", no se lanzará ninguna excepción. |
Clases de implementación principales:
ArrayDeque : cola lineal bidireccional basada en la implementación de la matriz
LinkedList: cola bidireccional en cadena basada en la implementación de la lista vinculada
3. Ejemplo de demostración de deque
public static void main(String[] args) {
Deque<Integer> deque=new LinkedList<Integer>();
deque.offerLast(10);
deque.offerLast(15);
deque.offerLast(20);
deque.offerFirst(5);
System.out.println("弹出队首元素"+deque.pollFirst());
System.out.println("弹出队尾元素"+deque.pollLast());
System.out.println("查看此时队尾元素"+deque.peekLast());
System.out.println("判断队列是否为空"+deque.isEmpty());
}
4. Aplicación típica de deque (ventana deslizante / problema de pila monótona)
El problema de la cola monótona se
refiere a la Oferta 59-I. Ventana deslizante máxima