Java Deque y su aplicación

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).

Inserte la descripción de la imagen aquí

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());
}

Inserte la descripción de la imagen aquí

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

Supongo que te gusta

Origin blog.csdn.net/qq_39736597/article/details/113815267
Recomendado
Clasificación