PriorityQueue em Java

Farkhanda Athar 12 outubro 2023
  1. Declaração de PriorityQueue em Java
  2. Adicionando Elemento a PriorityQueue
  3. Removendo Elementos de PriorityQueue
  4. Acessando Elementos PriorityQueue
  5. Iterando o PriorityQueue
PriorityQueue em Java

Um PriorityQueue é usado quando os objetos devem prosseguir com base na prioridade. Também é baseado no algoritmo First-In-First-Out, mas às vezes os elementos precisam ser processados ​​com base na prioridade. É por isso que PriorityQueue entra em jogo. PriorityQueue é baseado em um heap de prioridade. Os elementos em PriorityQueue são organizados de acordo com a ordem natural e, no momento da construção da queue, depende de qual construtor foi usado.

Declaração de PriorityQueue em Java

public class PriorityQueue<E> extends AbstractQueue<E> implements Serializable

Aqui, E é o tipo de elemento mantido nesta fila.

Vamos discutir como as diferentes operações podem ser realizadas na classe PriorityQueue.

Adicionando Elemento a PriorityQueue

Para incluir um item em PriorityQueue, é possível usar o método add() ou o método addition(). O pedido de inserção não é salvo em PriorityQueue. Esses elementos serão armazenados seguindo a ordem de prioridade, que será crescente por padrão.

Exemplo:

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);
  }
}

Resultado:

[To, Welcome, Party]

Removendo Elementos de PriorityQueue

Para remover o elemento de PriorityQueue, podemos usar o método delete(). Se houver vários desses objetos, a primeira instância do objeto será removida. Além disso, também é possível usar o método poll() para retirar o cabeçote e substituí-lo.

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);
  }
}

Resultado:

Initial PriorityQueue [To, Welcome, Party]
After Remove - [To, Welcome]
Poll Method - To
Final PriorityQueue - [Party]

Acessando Elementos PriorityQueue

Porque Queue se baseia no princípio Primeiro a Entrar, Só podemos acessar o chefe da Queue. Para obter acesso aos elementos Queue prioritários, pode utilizar o método peek().

Exemplo:

// 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);
  }
}

Resultado:

PriorityQueue: [To, Welcome, Party]
Accessed Element: To

Iterando o PriorityQueue

Existem muitas maneiras de iterar na PriorityQueue. O método mais conhecido é converter a queue em um array e, em seguida, percorrê-la usando o loop for. Além disso, a queue vem com um iterador interno que pode ser usado para percorrer a queue.

Exemplo:

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() + " ");
    }
  }
}

Resultado:

To Welcome Party

Artigo relacionado - Java Queue