Die Schnittstelle Queue ist im Paket java.util verfügbar und erweitert die Collection-Schnittstelle. Es wird verwendet, um die Elemente aufzubewahren, die nach dem FIFO-Prinzip (First In First Out) verarbeitet werden. Es handelt sich um eine geordnete Liste von Objekten, bei der das Einfügen von Elementen am Ende der Liste und das Entfernen von Elementen am Anfang der Liste erfolgt.
Da es sich um eine Schnittstelle handelt, benötigt die Warteschlange für die Deklaration eine konkrete Klasse. Die gebräuchlichsten Klassen sind LinkedList und PriorityQueue in Java. Von diesen Klassen durchgeführte Implementierungen sind nicht threadsicher. Wenn eine Thread-sichere Implementierung erforderlich ist, ist PriorityBlockingQueue eine verfügbare Option.
Deklaration der Warteschlangenschnittstelle
public interface Queue extends Collection
Methoden der Java-Warteschlangenschnittstelle
Methode | Beschreibung |
---|---|
boolesches Add(Objekt) | Es wird verwendet, um das angegebene Element in diese Warteschlange einzufügen und bei Erfolg true zurückzugeben. |
boolesches Angebot (Objekt) | Es wird verwendet, um das angegebene Element in diese Warteschlange einzufügen. |
Objekt entfernen() | Es wird verwendet, um den Kopf dieser Warteschlange abzurufen und zu entfernen. |
Objektumfrage() | Es wird verwendet, um den Kopf dieser Warteschlange abzurufen und zu entfernen, oder gibt null zurück, wenn diese Warteschlange leer ist. |
Objektelement() | Es wird verwendet, um den Kopf dieser Warteschlange abzurufen, aber nicht zu entfernen. |
Objekt-Peek() | Es wird verwendet, um den Kopf dieser Warteschlange abzurufen, aber nicht zu entfernen, oder gibt null zurück, wenn diese Warteschlange leer ist. |
Merkmale einer Warteschlange
Im Folgenden sind einige wichtige Merkmale einer Warteschlange aufgeführt.
- Wie bereits erwähnt, wird das FIFO-Konzept zum Einfügen und Löschen von Elementen aus einer Warteschlange verwendet.
- Die Java-Warteschlange bietet Unterstützung für alle Methoden der Collection-Schnittstelle, einschließlich Löschen, Einfügen usw.
- PriorityQueue, ArrayBlockingQueue und LinkedList sind die am häufigsten verwendeten Implementierungen.
- Die NullPointerException wird ausgelöst, wenn eine Nulloperation für die BlockingQueues ausgeführt wird.
- Die Warteschlangen, die in der vorhanden sind util Paket werden als Unbounded Queues bezeichnet.
- Die Warteschlangen, die in der vorhanden sind nützlich Paket werden als begrenzte Warteschlangen bezeichnet.
- Alle Warteschlangen mit Ausnahme der Deques erleichtern das Entfernen und Einfügen am Anfang und Ende der Warteschlange. jeweils. Tatsächlich unterstützen Deques das Einsetzen und Entfernen von Elementen an beiden Enden.
PriorityQueue-Klasse
PriorityQueue ist auch eine Klasse, die im Sammlungsframework definiert ist und uns die Möglichkeit gibt, die Objekte auf der Grundlage ihrer Priorität zu verarbeiten. Es wurde bereits beschrieben, dass das Einfügen und Löschen von Objekten in der Java-Warteschlange nach dem FIFO-Muster erfolgt. Manchmal müssen die Elemente der Warteschlange jedoch entsprechend ihrer Priorität verarbeitet werden. Hier kommt eine PriorityQueue ins Spiel.
Löwe im Vergleich zu einem Tiger
Deklaration der PriorityQueue-Klasse
Sehen wir uns die Deklaration für die Klasse java.util.PriorityQueue an.
public class PriorityQueue extends AbstractQueue implements Serializable
Java PriorityQueue-Beispiel
Dateiname: TestCollection12.java
import java.util.*; class TestCollection12{ public static void main(String args[]){ PriorityQueue queue=new PriorityQueue(); queue.add('Amit'); queue.add('Vijay'); queue.add('Karan'); queue.add('Jai'); queue.add('Rahul'); System.out.println('head:'+queue.element()); System.out.println('head:'+queue.peek()); System.out.println('iterating the queue elements:'); Iterator itr=queue.iterator(); while(itr.hasNext()){ System.out.println(itr.next()); } queue.remove(); queue.poll(); System.out.println('after removing two elements:'); Iterator itr2=queue.iterator(); while(itr2.hasNext()){ System.out.println(itr2.next()); } } }Testen Sie es jetzt
Ausgabe:
head:Amit head:Amit iterating the queue elements: Amit Jai Karan Vijay Rahul after removing two elements: Karan Rahul Vijay
Java PriorityQueue-Beispiel: Buch
Sehen wir uns ein PriorityQueue-Beispiel an, in dem wir Bücher zur Warteschlange hinzufügen und alle Bücher drucken. Die Elemente in PriorityQueue müssen vom Typ Comparable sein. String- und Wrapper-Klassen sind standardmäßig vergleichbar. Um benutzerdefinierte Objekte in PriorityQueue hinzuzufügen, müssen Sie die Comparable-Schnittstelle implementieren.
Apache
Dateiname: LinkedListExample.java
import java.util.*; class Book implements Comparable{ int id; String name,author,publisher; int quantity; public Book(int id, String name, String author, String publisher, int quantity) { this.id = id; this.name = name; this.author = author; this.publisher = publisher; this.quantity = quantity; } public int compareTo(Book b) { if(id>b.id){ return 1; }else if(id <b.id){ return -1; }else{ 0; } public class linkedlistexample { static void main(string[] args) queue priorityqueue(); creating books book b1="new" book(121,'let us c','yashwant kanetkar','bpb',8); b2="new" book(233,'operating system','galvin','wiley',6); b3="new" book(101,'data communications & networking','forouzan','mc graw hill',4); adding to the queue.add(b1); queue.add(b2); queue.add(b3); system.out.println('traversing elements:'); traversing elements for(book b:queue){ system.out.println(b.id+' '+b.name+' '+b.author+' '+b.publisher+' '+b.quantity); queue.remove(); system.out.println('after removing one record:'); < pre> <p> <strong>Output:</strong> </p> <pre>Traversing the queue elements: 101 Data Communications & Networking Forouzan Mc Graw Hill 4 233 Operating System Galvin Wiley 6 121 Let us C Yashwant Kanetkar BPB 8 After removing one book record: 121 Let us C Yashwant Kanetkar BPB 8 233 Operating System Galvin Wiley 6 </pre> <hr></b.id){>