PriorityQueue em Java
- Declaração de PriorityQueue em Java
- Adicionando Elemento a PriorityQueue
- Removendo Elementos de PriorityQueue
- Acessando Elementos PriorityQueue
- Iterando o PriorityQueue
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