Vmesnik Queue je na voljo v paketu java.util in razširja vmesnik Collection. Uporablja se za ohranjanje elementov, ki so obdelani na način FIFO (First In First Out). Je urejen seznam objektov, kjer se vstavljanje elementov zgodi na koncu seznama, odstranitev elementov pa na začetku seznama.
Ker je čakalna vrsta vmesnik, zahteva za deklaracijo konkreten razred, najpogostejša razreda pa sta LinkedList in PriorityQueue v Javi. Implementacije, ki jih izvajajo ti razredi, niso niti varne. Če je potrebna nit varna izvedba, je na voljo možnost PriorityBlockingQueue.
Deklaracija vmesnika čakalne vrste
public interface Queue extends Collection
Metode vmesnika Java Queue
Metoda | Opis |
---|---|
logični dodatek (predmet) | Uporablja se za vstavljanje podanega elementa v to čakalno vrsto in vrnitev true po uspehu. |
logična ponudba (objekt) | Uporablja se za vstavljanje določenega elementa v to čakalno vrsto. |
Predmet odstrani() | Uporablja se za pridobivanje in odstranjevanje glave te čakalne vrste. |
Anketa predmeta() | Uporablja se za pridobitev in odstranitev glave te čakalne vrste ali vrne vrednost null, če je ta čakalna vrsta prazna. |
Element predmeta () | Uporablja se za pridobitev, vendar ne za odstranitev glave te čakalne vrste. |
Predmet peek() | Uporablja se za pridobivanje, vendar ne odstrani glave te čakalne vrste, ali vrne ničelno vrednost, če je ta čakalna vrsta prazna. |
Značilnosti čakalne vrste
Sledi nekaj pomembnih lastnosti čakalne vrste.
- Kot smo že omenili, se koncept FIFO uporablja za vstavljanje in brisanje elementov iz čakalne vrste.
- Čakalna vrsta Java nudi podporo za vse metode vmesnika zbirke, vključno z brisanjem, vstavljanjem itd.
- PriorityQueue, ArrayBlockingQueue in LinkedList so izvedbe, ki se najpogosteje uporabljajo.
- Izjema NullPointerException se sproži, če se na BlockingQueues izvede katera koli ničelna operacija.
- Tiste čakalne vrste, ki so prisotne v util so znani kot neomejene čakalne vrste.
- Tiste čakalne vrste, ki so prisotne v uporaben paketi so znani kot omejene čakalne vrste.
- Vse čakalne vrste, razen Deques, olajšajo odstranjevanje in vstavljanje na čelu in repu čakalne vrste; oz. Deques dejansko podpirajo vstavljanje in odstranjevanje elementov na obeh koncih.
PriorityQueue Class
PriorityQueue je tudi razred, ki je definiran v ogrodju zbirke, ki nam daje način za obdelavo objektov na podlagi prioritete. Opisano je že, da vstavljanje in brisanje objektov sledi vzorcu FIFO v čakalni vrsti Java. Vendar pa je včasih treba elemente čakalne vrste obdelati glede na prioriteto, kjer začne delovati PriorityQueue.
Deklaracija razreda PriorityQueue
Oglejmo si deklaracijo za razred java.util.PriorityQueue.
public class PriorityQueue extends AbstractQueue implements Serializable
Primer Java PriorityQueue
Ime datoteke: TestCollection12.java
združevanje nizov
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()); } } }Preizkusite zdaj
Izhod:
head:Amit head:Amit iterating the queue elements: Amit Jai Karan Vijay Rahul after removing two elements: Karan Rahul Vijay
Primer Java PriorityQueue: Knjiga
Oglejmo si primer PriorityQueue, kjer dodajamo knjige v čakalno vrsto in natisnemo vse knjige. Elementi v PriorityQueue morajo biti primerljive vrste. Razreda String in Wrapper sta privzeto primerljiva. Če želite dodati uporabniško definirane objekte v PriorityQueue, morate implementirati vmesnik Comparable.
Ime datoteke: 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){>