En el último tutorial, vimos cómo una cola atiende solicitudes basadas en FIFO (primero en entrar, primero en salir). Ahora la pregunta es: ¿Y si quisiéramos atender la solicitud en función de la prioridad en lugar de FIFO? En un escenario práctico, este tipo de solución sería preferible ya que es de naturaleza más dinámica y eficiente. Esto se puede hacer con la ayuda de PriorityQueue, que atiende la solicitud en función de la prioridad que establezcamos mediante Comparator.

Ejemplo de Java PriorityQueue

En este ejemplo, estoy agregando algunas cadenas al archivo PriorityQueue, durante la creación PriorityQueue Pasé el comparador (llamado MyComparator) al constructor PriorityQueue.
En MyComparator java, clasifiqué las cadenas por su longitud, lo que significa la prioridad que establecí PriorityQueue es la longitud de la cuerda. De esta manera, me aseguré de que la cadena más pequeña se sirviera primero en lugar de la cadena que agregué primero.

PriorityQueueExample.java

import java.util.PriorityQueue;
public class PriorityQueueExample
{
    public static void main(String[] args)
    {
        
        PriorityQueue<String> queue = 
            new PriorityQueue<String>(15, new MyComparator());
        queue.add("Tyrion Lannister");
        queue.add("Daenerys Targaryen");
        queue.add("Arya Stark");
        queue.add("Petyr 'Littlefinger' Baelish");
      
        /*
         * What I am doing here is removing the highest
         * priority element from Queue and displaying it.
         * The priority I have set is based on the string
         * length. The logic for it is written in Comparator
         */
        while (queue.size() != 0)
        {
            System.out.println(queue.poll());
        
        }
    }
}

MyComparator.java

import java.util.Comparator;

public class MyComparator implements Comparator<String>
{
   @Override
   public int compare(String x, String y)
   {
      return x.length() - y.length();
   }
}

Producción:

Arya Stark
Tyrion Lannister
Daenerys Targaryen
Petyr 'Littlefinger' Baelish

Métodos de la clase PriorityQueue

suma booleana (E y): Agrega el elemento en PriorityQueue.

leer  Cómo convertir LinkedList a una matriz usando toArray () en Java

vacío claro (): Este método elimina todos los elementos de PriorityQueue.

boolean contiene (Elemento y): Este método devuelve verdadero, si el elemento especificado existe en la cola.

Oferta booleana (E y): Como el método add ().

Y asoma (): Devuelve el encabezado (el primer elemento) de la cola.

Y encuesta (): Elimina la parte superior de la cola y la devuelve.

booleano eliminar (E y): Este método elimina el elemento especificado de la cola y devuelve verdadero si la eliminación se realiza correctamente. Si el elemento especificado no está presente en la cola, devuelve falso.

int tamaño (): Devuelve el tamaño de la cola.

objeto[] toArray (): Devuelve una matriz que contiene todos los elementos de la cola.

Referencia de método: Documentación oficial.

Por avivcas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *