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){>