Java deque

Java deque
Una cola en la informática es una estructura de datos de lista de primera vez (FIFO). Esto significa agregar un nuevo elemento, el elemento está eneado en la parte posterior de la lista; y para eliminar un elemento, el elemento se deja de la parte delantera de la lista. El elemento frontal también se puede mirar, lo que significa leerlo pero no eliminarlo.

Una pila en la informática es una estructura de datos de la lista de Last-In_First-Out (LIFO). Esto significa agregar un nuevo elemento, el elemento se empuja al frente de la lista; y para eliminar un elemento, el elemento aparece desde el frente de la lista. El elemento frontal también se puede mirar, lo que significa leerlo pero no eliminarlo.

El nombre "deque" es la forma corta para "cola de doble extremo", pronunciado "mazo". El Deque es una estructura de datos de la lista FIFO y una LIFO en Java. Bueno, también en Java, el Deque es una interfaz desde la cual se pueden implementar clases. Java ya tiene las siguientes clases implementadas: Arraydeque, concurrentLinkeddeque, LinkedBlockingdeque, LinkedList. La clase Arraydeque ha sido elegida para ser estudiada en este artículo.

Los siguientes son Java Arraydeque Métodos correspondientes para la cola:

Cola Arraydeque
enoue agregar
desembolsar eliminar
ojeada ojeada

Los siguientes son los métodos correspondientes de Java Arraydeque para la pila:

Pila Arraydeque
empujar empujar
estallido estallido
ojeada ojeada

Nota: El método PEEK () es el mismo para ambos comportamientos. Además, eliminar () y pop () son muy similares; se explican a continuación.

Construyendo un Arraydeque

La clase Arraydeque está en el Java.utilizar.* Paquete, que debe importarse. Tiene tres constructores, dos de los cuales se explican aquí.

Public Arraydeque ()
Esto crea un deque vacío, como muestra el siguiente segmento de código:

Arraydeque DQ = nuevo Arraydeque();
dq.agregar ('f'); dq.agregar ('g'); dq.agregar ('h'); dq.agregar ('i'); dq.agregar ('j');

Se agregaron cinco elementos. El nombre del deque aquí es, dq.

Public Arraydeque (Colección C)
Este constructor sobrecargado crea un deque de otro deque. El siguiente segmento de código ilustra esto:

Arraydeque DQ = nuevo Arraydeque();
dq.agregar ('f'); dq.agregar ('g'); dq.agregar ('h'); dq.agregar ('i'); dq.agregar ('j');
Arraydeque DQ1 = nuevo Arraydeque(dq);

DQ1 ha sido creado a partir de DQ.

Métodos de la clase Arraydeque

ADD PÚBLICO BOOLEAN (E E)
Este es el equivalente de Enqueue. Agrega un elemento al final del deque. El siguiente programa ilustra esto:

importar java.utilizar.*;
clase pública THECLASS
public static void main (string [] args)
Arraydeque DQ = nuevo Arraydeque();
dq.agregar ('f'); dq.agregar ('g'); dq.agregar ('h'); dq.agregar ('i'); dq.agregar ('j');

Public int size ()
Esto devuelve el tamaño (longitud) del deque. El siguiente programa ilustra esto:

importar java.utilizar.*;
clase pública THECLASS
public static void main (string [] args)
Arraydeque DQ = nuevo Arraydeque();
dq.agregar ('f'); dq.agregar ('g'); dq.agregar ('h'); dq.agregar ('i'); dq.agregar ('j');
int sz = dq.tamaño();
Sistema.afuera.println (SZ);

La salida es 5.

Public e remove ()
Este es el equivalente de Doceue. Elimina un elemento del frente de la lista. El siguiente programa ilustra esto:

importar java.utilizar.*;
clase pública THECLASS
public static void main (string [] args)
Arraydeque DQ = nuevo Arraydeque();
dq.agregar ('f'); dq.agregar ('g'); dq.agregar ('h'); dq.agregar ('i'); dq.agregar ('j');
char ch1 = dq.eliminar(); char ch2 = dq.eliminar(); char ch3 = dq.eliminar();
char ch4 = dq.eliminar(); char ch5 = dq.eliminar();
Sistema.afuera.imprimir (CH1); Sistema.afuera.imprimir ("); sistema.afuera.imprimir (CH2); Sistema.afuera.imprimir(");
Sistema.afuera.imprimir (CH3); Sistema.afuera.imprimir ("); sistema.afuera.imprimir (CH4); Sistema.afuera.imprimir(");
Sistema.afuera.imprimir (ch5); Sistema.afuera.imprimir(");
Sistema.afuera.println ();

La salida es:

F G H I J

mostrando un comportamiento de FIFO.

Public E Peek ()
Esto lee el elemento en la parte delantera del deque sin quitarlo. El siguiente programa ilustra esto:

importar java.utilizar.*;
clase pública THECLASS
public static void main (string [] args)
Arraydeque DQ = nuevo Arraydeque();
dq.agregar ('f'); dq.agregar ('g'); dq.agregar ('h'); dq.agregar ('i'); dq.agregar ('j');
char ch1 = dq.ojeada(); char ch2 = dq.ojeada(); char ch3 = dq.ojeada();
char ch4 = dq.ojeada(); char ch5 = dq.ojeada();
Sistema.afuera.imprimir (CH1); Sistema.afuera.imprimir ("); sistema.afuera.imprimir (CH2); Sistema.afuera.imprimir(");
Sistema.afuera.imprimir (CH3); Sistema.afuera.imprimir ("); sistema.afuera.imprimir (CH4); Sistema.afuera.imprimir(");
Sistema.afuera.imprimir (ch5); Sistema.afuera.imprimir(");
Sistema.afuera.println ();

La salida es:

F f f f f

indicando que no se ha eliminado nada, y el primer elemento acaba de leer cinco veces.

PUBLICACIÓN PÚBLICA PUSH (E E)
Esto agrega un elemento al frente del deque. El siguiente programa ilustra esto:

importar java.utilizar.*;
clase pública THECLASS
public static void main (string [] args)
Arraydeque DQ = nuevo Arraydeque();
dq.push ('f'); dq.push ('g'); dq.push ('h'); dq.push ('i'); dq.push ('j');
char ch1 = dq.eliminar(); char ch2 = dq.eliminar(); char ch3 = dq.eliminar();
char ch4 = dq.eliminar(); char ch5 = dq.eliminar();
Sistema.afuera.imprimir (CH1); Sistema.afuera.imprimir ("); sistema.afuera.imprimir (CH2); Sistema.afuera.imprimir(");
Sistema.afuera.imprimir (CH3); Sistema.afuera.imprimir ("); sistema.afuera.imprimir (CH4); Sistema.afuera.imprimir(");
Sistema.afuera.imprimir (ch5); Sistema.afuera.imprimir(");
Sistema.afuera.println ();

La salida es:

J I H G F

mostrando un comportamiento de Lifo.

Public E Pop ()
Esto elimina y devuelve el primer elemento del deque. El siguiente programa ilustra esto:

importar java.utilizar.*;
clase pública THECLASS
public static void main (string [] args)
Arraydeque DQ = nuevo Arraydeque();
dq.push ('f'); dq.push ('g'); dq.push ('h'); dq.push ('i'); dq.push ('j');
char ch1 = dq.estallido(); char ch2 = dq.estallido(); char ch3 = dq.estallido();
char ch4 = dq.estallido(); char ch5 = dq.estallido();
Sistema.afuera.imprimir (CH1); Sistema.afuera.imprimir ("); sistema.afuera.imprimir (CH2); Sistema.afuera.imprimir(");
Sistema.afuera.imprimir (CH3); Sistema.afuera.imprimir ("); sistema.afuera.imprimir (CH4); Sistema.afuera.imprimir(");
Sistema.afuera.imprimir (ch5); Sistema.afuera.imprimir(");
Sistema.afuera.println ();

La salida es:

J I H G F

mostrando un comportamiento de Lifo.

Public Void foreach (acción del consumidor)
Este método foreach se puede usar para acceder a cada elemento en el deque. El siguiente programa lo usa para imprimir todos los elementos en el Deque:

importar java.utilizar.*;
clase pública THECLASS
public static void main (string [] args)
Arraydeque DQ = nuevo Arraydeque();
dq.push ('f'); dq.push ('g'); dq.push ('h'); dq.push ('i'); dq.push ('j');
dq.foreach ((elemento) -> sistema.afuera.imprimir (elemento + ""));
Sistema.afuera.println ();

La salida es:

J I H G F

El elemento es una variable ficticia que representa cada elemento en el deque. Tenga en cuenta la forma en que se ha utilizado. Tenga en cuenta el uso del operador de flecha, -> . La iteración se realizó en orden inverso.

Iterador iterador ()
Esto devuelve un iterador que se puede usar para eliminar un elemento dentro del deque. Sin embargo, esta acción tarda más que eliminar un elemento en la parte delantera o posterior del deque. La siguiente declaración devolvería al iterador para los caracteres de un deque.

Iterador iter = dq.iterador ();

donde iter es el objeto iterador, y dq es el objeto deque.

El iterador tiene los siguientes métodos:

Boolean Hasnext (): Devuelve verdadero si la iteración tiene más elementos.

E Next (): Devuelve el siguiente elemento en la iteración.

Void predeterminado remove (): elimina de la lista, el último elemento devuelto por este iterador (siguiente).

Tenga en cuenta que no tiene un método para insertar un elemento dentro del Deque.

Eliminar un elemento dentro de Deque

El siguiente programa elimina 'H' en el medio de la lista de Deque: F, G, H, I, J:

importar java.utilizar.*;
clase pública THECLASS
public static void main (string [] args)
Arraydeque DQ = nuevo Arraydeque();
dq.push ('f'); dq.push ('g'); dq.push ('h'); dq.push ('i'); dq.push ('j');
Iterador iter = dq.iterador ();
iter.próximo(); iter.próximo(); iter.próximo();
iter.eliminar();
dq.foreach ((elemento) -> sistema.afuera.imprimir (elemento + ""));
Sistema.afuera.println ();

La salida es:

J I G F

Tenga en cuenta que Next () tuvo que llamarse tres veces.

Conclusión

En Java, el deque es una colección FIFO y LIFO. Deque en Java es en realidad una interfaz desde la cual se debe implementar una clase antes de que se pueda usar el Deque. Afortunadamente, Java ya tiene las siguientes clases implementadas de Deque: Arraydeque, concurrentLinkeddeque, LinkedBlockingdeque, LinkedList. La operación de Arraydeque se ha explicado arriba.