La interfaz Queue está disponible en el paquete java.util y amplía la interfaz Collection. Se utiliza para mantener los elementos que se procesan según el método Primero en entrar, primero en salir (FIFO). Es una lista ordenada de objetos, donde la inserción de elementos se produce al final de la lista y la eliminación de elementos se produce al principio de la lista.
Al ser una interfaz, la cola requiere, para la declaración, una clase concreta, y las clases más comunes son LinkedList y PriorityQueue en Java. Las implementaciones realizadas por estas clases no son seguras para subprocesos. Si se requiere tener una implementación segura para subprocesos, PriorityBlockingQueue es una opción disponible.
Declaración de interfaz de cola
public interface Queue extends Collection
Métodos de la interfaz de cola de Java
Método | Descripción |
---|---|
adición booleana (objeto) | Se utiliza para insertar el elemento especificado en esta cola y devolver verdadero en caso de éxito. |
oferta booleana (objeto) | Se utiliza para insertar el elemento especificado en esta cola. |
Eliminar objeto() | Se utiliza para recuperar y eliminar el encabezado de esta cola. |
Encuesta de objetos() | Se utiliza para recuperar y eliminar el encabezado de esta cola, o devuelve nulo si esta cola está vacía. |
Elemento de objeto() | Se utiliza para recuperar, pero no eliminar, el encabezado de esta cola. |
Vistazo del objeto() | Se utiliza para recuperar, pero no eliminar, el encabezado de esta cola, o devuelve nulo si esta cola está vacía. |
Características de una cola
Las siguientes son algunas características importantes de una cola.
- Como se mencionó anteriormente, el concepto FIFO se utiliza para la inserción y eliminación de elementos de una cola.
- Java Queue brinda soporte para todos los métodos de la interfaz de la Colección, incluida la eliminación, la inserción, etc.
- PriorityQueue, ArrayBlockingQueue y LinkedList son las implementaciones que se utilizan con más frecuencia.
- Se genera NullPointerException si se realiza alguna operación nula en BlockingQueues.
- Aquellas colas que están presentes en el útil El paquete se conoce como colas ilimitadas.
- Aquellas colas que están presentes en el útil paquete se conocen como colas acotadas.
- Todas las colas, excepto los Deques, facilitan la eliminación y la inserción al principio y al final de la cola; respectivamente. De hecho, deques soportan la inserción y extracción del elemento en ambos extremos.
Clase de cola prioritaria
PriorityQueue también es una clase definida en el marco de la colección que nos brinda una forma de procesar los objetos según la prioridad. Ya se describió que la inserción y eliminación de objetos sigue el patrón FIFO en la cola de Java. Sin embargo, a veces es necesario procesar los elementos de la cola según la prioridad, ahí es donde entra en acción PriorityQueue.
Declaración de clase PriorityQueue
Veamos la declaración de la clase java.util.PriorityQueue.
public class PriorityQueue extends AbstractQueue implements Serializable
Ejemplo de cola de prioridad de Java
Nombre del archivo: TestCollection12.java
java es instancia de
import java.util.*; class TestCollection12{ public static void main(String args[]){ PriorityQueue queue=new PriorityQueue(); queue.add('Amit'); queue.add('Vijay'); queue.add('Karan'); queue.add('Jai'); queue.add('Rahul'); System.out.println('head:'+queue.element()); System.out.println('head:'+queue.peek()); System.out.println('iterating the queue elements:'); Iterator itr=queue.iterator(); while(itr.hasNext()){ System.out.println(itr.next()); } queue.remove(); queue.poll(); System.out.println('after removing two elements:'); Iterator itr2=queue.iterator(); while(itr2.hasNext()){ System.out.println(itr2.next()); } } }Pruébalo ahora
Producción:
head:Amit head:Amit iterating the queue elements: Amit Jai Karan Vijay Rahul after removing two elements: Karan Rahul Vijay
Ejemplo de Java PriorityQueue: libro
Veamos un ejemplo de PriorityQueue en el que agregamos libros a la cola e imprimimos todos los libros. Los elementos de PriorityQueue deben ser de tipo Comparable. Las clases String y Wrapper son comparables de forma predeterminada. Para agregar objetos definidos por el usuario en PriorityQueue, debe implementar la interfaz Comparable.
Nombre del archivo: LinkedListExample.java
import java.util.*; class Book implements Comparable{ int id; String name,author,publisher; int quantity; public Book(int id, String name, String author, String publisher, int quantity) { this.id = id; this.name = name; this.author = author; this.publisher = publisher; this.quantity = quantity; } public int compareTo(Book b) { if(id>b.id){ return 1; }else if(id <b.id){ return -1; }else{ 0; } public class linkedlistexample { static void main(string[] args) queue priorityqueue(); creating books book b1="new" book(121,'let us c','yashwant kanetkar','bpb',8); b2="new" book(233,'operating system','galvin','wiley',6); b3="new" book(101,'data communications & networking','forouzan','mc graw hill',4); adding to the queue.add(b1); queue.add(b2); queue.add(b3); system.out.println('traversing elements:'); traversing elements for(book b:queue){ system.out.println(b.id+' '+b.name+' '+b.author+' '+b.publisher+' '+b.quantity); queue.remove(); system.out.println('after removing one record:'); < pre> <p> <strong>Output:</strong> </p> <pre>Traversing the queue elements: 101 Data Communications & Networking Forouzan Mc Graw Hill 4 233 Operating System Galvin Wiley 6 121 Let us C Yashwant Kanetkar BPB 8 After removing one book record: 121 Let us C Yashwant Kanetkar BPB 8 233 Operating System Galvin Wiley 6 </pre> <hr></b.id){>