Interfacekøen er tilgængelig i java.util-pakken og udvider samlingsgrænsefladen. Det bruges til at holde de elementer, der behandles på First In First Out-måden (FIFO). Det er en ordnet liste af objekter, hvor indsættelse af elementer sker i slutningen af listen, og fjernelse af elementer sker i begyndelsen af listen.
Da køen er en grænseflade, kræver køen, til erklæringen, en konkret klasse, og de mest almindelige klasser er LinkedList og PriorityQueue i Java. Implementeringer udført af disse klasser er ikke trådsikre. Hvis det er påkrævet at have en trådsikker implementering, er PriorityBlockingQueue en tilgængelig mulighed.
Køgrænsefladeerklæring
public interface Queue extends Collection
Metoder til Java Queue Interface
Metode | Beskrivelse |
---|---|
boolsk tilføjelse(objekt) | Det bruges til at indsætte det angivne element i denne kø og returnere true ved succes. |
boolesk tilbud (objekt) | Det bruges til at indsætte det angivne element i denne kø. |
Objekt fjern() | Det bruges til at hente og fjerne hovedet af denne kø. |
Objektundersøgelse() | Det bruges til at hente og fjerne hovedet af denne kø, eller returnerer null, hvis denne kø er tom. |
Objektelement() | Den bruges til at hente, men fjerner ikke, hovedet af denne kø. |
Objekt kig() | Det bruges til at hente, men fjerner ikke, hovedet af denne kø, eller returnerer null, hvis denne kø er tom. |
Funktioner i en kø
Følgende er nogle vigtige funktioner i en kø.
- Som diskuteret tidligere, bruges FIFO-konceptet til indsættelse og sletning af elementer fra en kø.
- Java-køen understøtter alle metoderne i samlingsgrænsefladen, inklusive sletning, indsættelse osv.
- PriorityQueue, ArrayBlockingQueue og LinkedList er de implementeringer, der bruges oftest.
- NullPointerException hæves, hvis der udføres en nul-handling på BlockingQueues.
- De køer, der er til stede i util pakke er kendt som ubundne køer.
- De køer, der er til stede i nyttig pakke er kendt som afgrænsede køer.
- Alle køer, der spærrer Deques, letter fjernelse og indsættelse i køens hoved og hale; henholdsvis. Faktisk understøtter deques element isætning og fjernelse i begge ender.
Priority Queue Class
PriorityQueue er også en klasse, der er defineret i samlingsrammerne, der giver os en måde at behandle objekterne på prioritet. Det er allerede beskrevet, at indsættelse og sletning af objekter følger FIFO-mønster i Java-køen. Nogle gange er det dog nødvendigt, at elementerne i køen behandles i henhold til prioriteten, det er her, en PriorityQueue træder i kraft.
Klasseerklæring om prioriteret kø
Lad os se erklæringen for klassen java.util.PriorityQueue.
public class PriorityQueue extends AbstractQueue implements Serializable
Eksempel på Java PriorityQueue
Filnavn: 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()); } } }Test 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 Eksempel: Bog
Lad os se et eksempel på PriorityQueue, hvor vi tilføjer bøger til køen og udskriver alle bøgerne. Elementerne i PriorityQueue skal være af sammenlignelig type. String- og Wrapper-klasser er som standard sammenlignelige. For at tilføje brugerdefinerede objekter i PriorityQueue skal du implementere Comparable interface.
Filnavn: 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){>