PriorityQueue en Java
- Declaración de PriorityQueue en Java
- Agregar elemento a PriorityQueue
- Eliminar elementos de PriorityQueue
- Acceder a los elementos de PriorityQueue
- Iterando el PriorityQueue
Un PriorityQueue se utiliza cuando los objetos deben continuar en función de la prioridad. También se basa en el algoritmo First-In-First-Out, pero a veces se requiere que los elementos se procesen en función de la prioridad. Por eso entra en juego PriorityQueue
. PriorityQueue
se basa en un montón de prioridad. Los elementos de la PriorityQueue
se organizan según el orden natural y, en el momento de la construcción de la queue
, depende del constructor que se haya utilizado.
Declaración de PriorityQueue en Java
public class PriorityQueue<E> extends AbstractQueue<E> implements Serializable
Aquí, E es el tipo de elementos retenidos en esta cola.
Analicemos cómo se pueden realizar las diferentes operaciones en la clase PriorityQueue
.
Agregar elemento a PriorityQueue
Para incluir un elemento en la PriorityQueue
, es posible utilizar el método add()
o el método add()
. El orden de inserción no se guarda dentro de la PriorityQueue
. Estos elementos se almacenarán siguiendo el orden de prioridad, que ascenderá por defecto.
Ejemplo:
import java.io.*;
import java.util.*;
public class PriorityQueueDemo {
public static void main(String args[]) {
PriorityQueue<String> pq = new PriorityQueue<>();
pq.add("Welcome");
pq.add("To");
pq.add("Party");
System.out.println(pq);
}
}
Producción :
[To, Welcome, Party]
Eliminar elementos de PriorityQueue
Para eliminar el elemento de PriorityQueue, podemos usar el método delete()
. Si hay varios de estos objetos, se elimina la primera instancia del objeto. Además, también es posible utilizar el método poll()
para tomar la cabeza y luego reemplazarla.
import java.io.*;
import java.util.*;
public class PriorityQueueDemo {
public static void main(String args[]) {
PriorityQueue<String> pq = new PriorityQueue<>();
pq.add("Welcome");
pq.add("To");
pq.add("Party");
System.out.println("Initial PriorityQueue " + pq);
pq.remove("Geeks");
System.out.println("After Remove - " + pq);
System.out.println("Poll Method - " + pq.poll());
System.out.println("Final PriorityQueue - " + pq);
}
}
Producción :
Initial PriorityQueue [To, Welcome, Party]
After Remove - [To, Welcome]
Poll Method - To
Final PriorityQueue - [Party]
Acceder a los elementos de PriorityQueue
Debido a que Queue
se basa en su principio Primero en entrar, primero en salir, solo podemos acceder al encabezado de la Queue
. Para acceder a los elementos Queue
que son una prioridad, puede emplear el método peek()
.
Ejemplo:
// Java program to access elements
// from a PriorityQueue
import java.util.*;
class PriorityQueueDemo {
// Main Method
public static void main(String[] args) {
// Creating a priority queue
PriorityQueue<String> pq = new PriorityQueue<>();
pq.add("Welcome");
pq.add("To");
pq.add("Party");
System.out.println("PriorityQueue: " + pq);
// Using the peek() method
String element = pq.peek();
System.out.println("Accessed Element: " + element);
}
}
Producción :
PriorityQueue: [To, Welcome, Party]
Accessed Element: To
Iterando el PriorityQueue
Hay muchas formas de iterar sobre PriorityQueue
. El método más conocido es convertir la queue
en un array y luego atravesarla usando el bucle for. Además, la queue
viene con un iterador interno que se puede utilizar para recorrer la queue
.
Ejemplo:
import java.util.*;
public class PriorityQueueDemo {
public static void main(String args[]) {
PriorityQueue<String> pq = new PriorityQueue<>();
pq.add("Welcome");
pq.add("To");
pq.add("Party");
Iterator iterator = pq.iterator();
while (iterator.hasNext()) {
System.out.print(iterator.next() + " ");
}
}
}
Producción :
To Welcome Party