PriorityQueue in Java
- Deklaration der PriorityQueue in Java
- Element zu PriorityQueue hinzufügen
- Entfernen von Elementen aus PriorityQueue
- Zugriff auf PriorityQueue-Elemente
- Iterieren der PriorityQueue
Eine PriorityQueue wird verwendet, wenn die Objekte basierend auf der Priorität fortfahren müssen. Es basiert auch auf dem First-In-First-Out-Algorithmus, aber manchmal müssen die Elemente basierend auf der Priorität bearbeitet werden. Deshalb kommt PriorityQueue
ins Spiel. PriorityQueue
basiert auf einem Priority-Heap. Die Elemente in der PriorityQueue
sind nach natürlicher Reihenfolge angeordnet, und zur Bauzeit der queue
hängt es davon ab, welcher Konstruktor verwendet wurde.
Deklaration der PriorityQueue in Java
public class PriorityQueue<E> extends AbstractQueue<E> implements Serializable
Hier ist E der Typ der Elemente, die in dieser Warteschlange gehalten werden.
Lassen Sie uns besprechen, wie die verschiedenen Operationen in der Klasse PriorityQueue
ausgeführt werden können.
Element zu PriorityQueue hinzufügen
Um ein Element in die PriorityQueue
aufzunehmen, ist es möglich, die Methode add()
oder addition()
zu verwenden. Die Einfügereihenfolge wird nicht in der PriorityQueue
gespeichert. Diese Elemente werden nach der Prioritätsreihenfolge gespeichert, die standardmäßig aufsteigend ist.
Beispiel:
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);
}
}
Ausgabe:
[To, Welcome, Party]
Entfernen von Elementen aus PriorityQueue
Um das Element aus einer PriorityQueue zu entfernen, können wir die Methode delete()
verwenden. Wenn mehrere solcher Objekte vorhanden sind, wird die erste Instanz des Objekts entfernt. Zusätzlich ist es auch möglich, den Kopf mit der Methode poll()
zu nehmen und dann zu ersetzen.
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);
}
}
Ausgabe:
Initial PriorityQueue [To, Welcome, Party]
After Remove - [To, Welcome]
Poll Method - To
Final PriorityQueue - [Party]
Zugriff auf PriorityQueue-Elemente
Da Queue
auf dem First In First Out
-Prinzip basiert, können wir nur auf den Kopf der Queue
zugreifen. Um auf die prioritären Queue
-Elemente zuzugreifen, können Sie die Methode peek()
verwenden.
Beispiel:
// 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);
}
}
Ausgabe:
PriorityQueue: [To, Welcome, Party]
Accessed Element: To
Iterieren der PriorityQueue
Es gibt viele Möglichkeiten, über die PriorityQueue
zu iterieren. Die bekannteste Methode besteht darin, die queue
in ein Array umzuwandeln und es dann mit der for-Schleife zu durchlaufen. Darüber hinaus verfügt die queue
über einen internen Iterator, mit dem die queue
durchlaufen werden kann.
Beispiel:
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() + " ");
}
}
}
Ausgabe:
To Welcome Party