PriorityQueue en Java

Farkhanda Athar 12 octubre 2023
  1. Declaración de PriorityQueue en Java
  2. Agregar elemento a PriorityQueue
  3. Eliminar elementos de PriorityQueue
  4. Acceder a los elementos de PriorityQueue
  5. Iterando el PriorityQueue
PriorityQueue en Java

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

Artículo relacionado - Java Queue