Sučelje Queue dostupno je u paketu java.util i proširuje sučelje Collection. Koristi se za čuvanje elemenata koji se obrađuju na način First In First Out (FIFO). To je uređena lista objekata, gdje se umetanje elemenata događa na kraju liste, a uklanjanje elemenata na početku liste.
in.sljedeća java
Budući da je sučelje, red zahtijeva, za deklaraciju, konkretnu klasu, a najčešće klase su LinkedList i PriorityQueue u Javi. Implementacije koje rade ove klase nisu niti sigurne. Ako je potrebna implementacija sigurne niti, PriorityBlockingQueue je dostupna opcija.
Deklaracija sučelja čekanja
public interface Queue extends Collection
Metode Java Queue sučelja
metoda | Opis |
---|---|
Booleov dodatak (objekt) | Koristi se za umetanje navedenog elementa u ovaj red čekanja i vraćanje true nakon uspjeha. |
Booleova ponuda (objekt) | Koristi se za umetanje navedenog elementa u ovaj red. |
Ukloni objekt() | Koristi se za dohvaćanje i uklanjanje glave ovog reda. |
Anketa objekta() | Koristi se za dohvaćanje i uklanjanje glave ovog reda ili vraća null ako je ovaj red prazan. |
Element objekta() | Koristi se za dohvaćanje, ali ne i uklanjanje glave ovog reda čekanja. |
Objekt peek() | Koristi se za dohvaćanje, ali ne uklanjanje, glave ovog reda ili vraća null ako je ovaj red prazan. |
Značajke reda čekanja
Slijede neke važne značajke reda čekanja.
- Kao što je ranije objašnjeno, FIFO koncept se koristi za umetanje i brisanje elemenata iz reda čekanja.
- Java Queue pruža podršku za sve metode sučelja Collection uključujući brisanje, umetanje itd.
- PriorityQueue, ArrayBlockingQueue i LinkedList implementacije su koje se najčešće koriste.
- NullPointerException se pokreće ako se na BlockingQueues izvrši bilo koja null operacija.
- Oni redovi koji su prisutni u util paketi poznati su kao neograničeni redovi čekanja.
- Oni redovi koji su prisutni u koristan paketi poznati su kao ograničeni redovi čekanja.
- Svi redovi koji zabranjuju Deques olakšavaju uklanjanje i umetanje na čelu i repu reda; odnosno. Zapravo, deques podržava umetanje i uklanjanje elementa na oba kraja.
PriorityQueue klasa
PriorityQueue je također klasa koja je definirana u okviru zbirke koja nam daje način za obradu objekata na temelju prioriteta. Već je opisano da umetanje i brisanje objekata slijedi FIFO obrazac u Java redu. Međutim, ponekad je potrebno elemente reda čekanja obraditi u skladu s prioritetom, tu stupa na snagu PriorityQueue.
Deklaracija klase PriorityQueue
Pogledajmo deklaraciju za klasu java.util.PriorityQueue.
public class PriorityQueue extends AbstractQueue implements Serializable
Primjer Java PriorityQueue
Naziv datoteke: 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()); } } }Testirajte sada
Izlaz:
head:Amit head:Amit iterating the queue elements: Amit Jai Karan Vijay Rahul after removing two elements: Karan Rahul Vijay
Primjer Java PriorityQueue: Knjiga
Pogledajmo primjer PriorityQueue gdje dodajemo knjige u red i ispisujemo sve knjige. Elementi u PriorityQueue moraju biti Comparable tipa. Klase String i Wrapper su Comparable prema zadanim postavkama. Za dodavanje korisnički definiranih objekata u PriorityQueue morate implementirati Comparable sučelje.
Naziv 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){>