Gränssnittet Queue är tillgängligt i java.util-paketet och utökar samlingsgränssnittet. Den används för att behålla de element som bearbetas på First In First Out (FIFO) sätt. Det är en ordnad lista med objekt, där infogning av element sker i slutet av listan, och borttagning av element sker i början av listan.
Eftersom kön är ett gränssnitt kräver kön, för deklarationen, en konkret klass, och de vanligaste klasserna är LinkedList och PriorityQueue i Java. Implementeringar gjorda av dessa klasser är inte trådsäkra. Om det krävs för att ha en trådsäker implementering är PriorityBlockingQueue ett tillgängligt alternativ.
Kögränssnittsdeklaration
public interface Queue extends Collection
Metoder för Java Queue Interface
Metod | Beskrivning |
---|---|
boolean add(objekt) | Den används för att infoga det angivna elementet i denna kö och returnera sant vid framgång. |
booleskt erbjudande (objekt) | Den används för att infoga det angivna elementet i denna kö. |
Objekt remove() | Den används för att hämta och ta bort huvudet i denna kö. |
Objektundersökning() | Den används för att hämta och ta bort huvudet på denna kö, eller returnerar null om den här kön är tom. |
Objektelement() | Den används för att hämta, men tar inte bort, chefen för denna kö. |
Object peek() | Det används för att hämta, men tar inte bort, huvudet på denna kö, eller returnerar null om denna kö är tom. |
Funktioner i en kö
Följande är några viktiga funktioner i en kö.
- Som diskuterats tidigare används FIFO-konceptet för att infoga och ta bort element från en kö.
- Java Queue ger stöd för alla metoder i samlingsgränssnittet inklusive radering, infogning etc.
- PriorityQueue, ArrayBlockingQueue och LinkedList är de implementeringar som används oftast.
- NullPointerException höjs om någon nolloperation görs på BlockingQueues.
- De köer som finns i util paket är kända som obegränsade köer.
- De köer som finns i användbar paket är kända som avgränsade köer.
- Alla köer som spärrar deques underlättar borttagning och införande i köns huvud och baksida; respektive. Faktum är att deques stödjer elementinsättning och borttagning i båda ändar.
PriorityQueue Class
PriorityQueue är också en klass som definieras i samlingsramverket som ger oss ett sätt att bearbeta objekten utifrån prioritet. Det har redan beskrivits att insättning och radering av objekt följer FIFO-mönster i Java-kön. Men ibland behövs köns element för att bearbetas enligt prioritet, det är där en PriorityQueue kommer till handling.
PriorityQueue Klassdeklaration
Låt oss se deklarationen för klassen java.util.PriorityQueue.
public class PriorityQueue extends AbstractQueue implements Serializable
Exempel på Java PriorityQueue
Filnamn: 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()); } } }Testa det nu
Produktion:
head:Amit head:Amit iterating the queue elements: Amit Jai Karan Vijay Rahul after removing two elements: Karan Rahul Vijay
Java PriorityQueue Exempel: Bok
Låt oss se ett exempel på PriorityQueue där vi lägger till böcker i kön och skriver ut alla böcker. Elementen i PriorityQueue måste vara av jämförbar typ. String- och Wrapper-klasserna är jämförbara som standard. För att lägga till användardefinierade objekt i PriorityQueue måste du implementera jämförbart gränssnitt.
Filnamn: 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){>