Interfaz de cola de Java
El paquete Java.util tiene la interfaz Queue, que amplía la interfaz Collection. Se utiliza para conservar los componentes tratados según el principio FIFO. Es una lista ordenada de elementos donde los elementos nuevos se agregan al final y los elementos antiguos se eliminan al principio.
Dado que es una interfaz, la cola necesita una clase concreta para la declaración, y las clases más populares en Java son LinkedList y PriorityQueue. Las implementaciones de estas clases no son seguras para subprocesos. PriorityBlockingQueue es una solución viable si se necesita una implementación segura para subprocesos.
Declaración :
Cola de interfaz pública
amplía la colección
Métodos de la interfaz de cola de Java
Método | Descripción |
suma booleana (objeto) | Inserta el elemento especificado en la cola y devuelve verdadero si tiene éxito. |
listado booleano (objeto) | Inserta el elemento especificado en la cola. |
Eliminar objeto () | Se utiliza para recuperar y eliminar el encabezado de la cola. |
Encuesta de objetos () | devuelve nulo si la cola está vacía; de lo contrario, obtiene y elimina el encabezado de la cola. |
Elemento de objeto () | Obtiene el encabezado de la cola, pero no lo elimina. |
Pico de objeto() | devuelve nulo si la cola está vacía; de lo contrario, obtendrá el encabezado de la cola sin eliminarlo. |
Características de una cola
- Los elementos de una cola se agregan y eliminan utilizando el paradigma FIFO.
- Todos los métodos de la interfaz de recopilación, como eliminar, insertar, etc., son compatibles con Java Queue.
- LinkedList, ArrayBlockingQueue y PriorityQueue son las implementaciones más populares de queue.
- Cualquier operación nula en las colas de bloqueo da como resultado el lanzamiento de NullPointerException.
- Las colas ilimitadas son aquellas colas que se incluyen en el paquete de utilidad.
- Las colas limitadas son aquellas colas que se incluyen en el paquete util.concurrent.
- Todas las colas, con la excepción de Deques, facilitan subir y bajar delante y detrás de la cola, respectivamente. Los deques permiten quitar e insertar elementos en cualquiera de los extremos.
Implementación de cola:
Java
|
The Elements of the queue are : [10, 20, 30, 40, 50] Removed element - 10 [20, 30, 40, 50] Head of the queue - 20 Size of the queue - 4
Clase PriorityQueue
Otra clase definida en el marco de la colección, PriorityQueue, proporciona un método para priorizar objetos a medida que se procesan. La cola de Java describe la inserción y eliminación de objetos de acuerdo con un patrón FIFO. Sin embargo, PriorityQueue se puede usar cuando es necesario procesar elementos de la cola de acuerdo con su prioridad.
Declaración :
cola de prioridad de clase pública
expande AbstractQueue fuera e implementar Serializable
Métodos de la clase Java PriorityQueue
Método | Descripción |
suma booleana (E e) | Agrega el elemento e a PriorityQueue. |
borrar vacío () | Borra PriorityQueue eliminando todos los elementos. |
comparadorcomparación() | Devuelve un comparador personalizado utilizado para ordenar elementos en la cola. |
booleano contiene (Objeto o) | Comprueba si el elemento especificado o está presente en PriorityQueue. si es así, devuelve verdadero. |
iterador< E >iterador() | Obtiene un iterador para PriorityQueue especificado. |
oferta booleana (E e) | Agregue el elemento dado e a PriorityQueue. |
mi mirada() | Se utiliza para devolver el encabezado de la cola sin eliminar el elemento. |
Encuesta por correo electrónico () | Si la cola está vacía, devolverá un valor nulo; de lo contrario, se eliminará y se devolverá el encabezado de la cola. |
tamaño int() | Devuelve el número de elementos en PriorityQueue. |
Objeto[] aArray() | Se utiliza para devolver una representación de matriz de PriorityQueue. |
T[] aArray(T[] a) | Se utiliza para devolver una representación de matriz para Priority Queue con el mismo tipo de tiempo de ejecución que la matriz especificada a. |
Características de PriorityQueue:
- PriorityQueue es una cola independiente.
- PriorityQueue no permite valores nulos. No se puede crear una cola de prioridad para objetos no comparables.
- Hereda de clases como Collection, AbstractCollection, AbstractQueue y Object.
- El extremo frontal de la cola contiene el elemento mínimo según el orden natural.
- La implementación de la cola de prioridad no es segura para subprocesos. Por lo tanto, debemos usar PriorityBlockingQueue si queremos un acceso sincronizado.
Implementando PriorityQueue:
Java
|
Diferencia entre la implementación de Queue y PriorityQueue:
Cola | Fila de prioridad |
La cola es una estructura de datos lineal. | Priority Queue es una extensión de Queue con un factor de prioridad integrado. |
Sigue el algoritmo First In First Out (FIFO) para controlar los elementos. | Sirve primero al elemento con una prioridad más alta. |
Enqueue y dequeue hecho en O(1). | Poner en cola y quitar de la cola hecho en O (log n) usando montones binarios. |
Se utiliza en algoritmos como Breadth First Search. | Se utiliza en algoritmos como el algoritmo de Dijkstra, los algoritmos de Prim, la programación de la CPU. |