Grensesnittet Queue er tilgjengelig i java.util-pakken og utvider samlingsgrensesnittet. Den brukes til å beholde elementene som behandles på First In First Out-måten (FIFO). Det er en ordnet liste over objekter, der innsetting av elementer skjer på slutten av listen, og fjerning av elementer skjer i begynnelsen av listen.
Som et grensesnitt krever køen, for erklæringen, en konkret klasse, og de vanligste klassene er LinkedList og PriorityQueue i Java. Implementeringer utført av disse klassene er ikke trådsikre. Hvis det kreves en trådsikker implementering, er PriorityBlockingQueue et tilgjengelig alternativ.
Køgrensesnitterklæring
public interface Queue extends Collection
Metoder for Java Queue Interface
| Metode | Beskrivelse |
|---|---|
| boolsk add(objekt) | Den brukes til å sette inn det spesifiserte elementet i denne køen og returnere sann ved suksess. |
| boolsk tilbud (objekt) | Den brukes til å sette inn det angitte elementet i denne køen. |
| Objekt fjern() | Den brukes til å hente og fjerne hodet på denne køen. |
| Objektundersøkelse() | Den brukes til å hente og fjerne hodet på denne køen, eller returnerer null hvis denne køen er tom. |
| Objektelement() | Den brukes til å hente, men fjerner ikke, lederen av denne køen. |
| Objekt kikk() | Den brukes til å hente, men fjerner ikke, hodet til denne køen, eller returnerer null hvis denne køen er tom. |
Funksjoner ved en kø
Følgende er noen viktige funksjoner i en kø.
- Som diskutert tidligere, brukes FIFO-konseptet for innsetting og sletting av elementer fra en kø.
- Java Queue gir støtte for alle metodene i samlingsgrensesnittet, inkludert sletting, innsetting osv.
- PriorityQueue, ArrayBlockingQueue og LinkedList er implementeringene som brukes oftest.
- NullPointerException økes hvis en null-operasjon utføres på blokkeringskøene.
- De køene som er tilstede i util pakken er kjent som ubundne køer.
- De køene som er tilstede i nyttig pakken er kjent som avgrensede køer.
- Alle køer som sperrer Deques forenkler fjerning og innsetting på toppen og halen av køen; hhv. Faktisk støtter deques innsetting og fjerning av element i begge ender.
Prioritetskøklasse
PriorityQueue er også en klasse som er definert i samlingsrammeverket som gir oss en måte å behandle objektene på basert på prioritet. Det er allerede beskrevet at innsetting og sletting av objekter følger FIFO-mønster i Java-køen. Noen ganger er det imidlertid nødvendig å behandle elementene i køen i henhold til prioriteten, det er her en PriorityQueue kommer til handling.
Klasseerklæring om prioritert kø
La oss se erklæringen for java.util.PriorityQueue-klassen.
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 nå Produksjon:
head:Amit head:Amit iterating the queue elements: Amit Jai Karan Vijay Rahul after removing two elements: Karan Rahul Vijay
Eksempel på Java PriorityQueue: Bok
La oss se et PriorityQueue-eksempel der vi legger til bøker i køen og skriver ut alle bøkene. Elementene i PriorityQueue må være av sammenlignbar type. String- og Wrapper-klasser er sammenlignbare som standard. For å legge til brukerdefinerte objekter i PriorityQueue, må du implementere sammenlignbart grensesnitt.
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){>