Rozhranie Queue je dostupné v balíku java.util a rozširuje rozhranie Collection. Používa sa na uchovanie prvkov, ktoré sú spracované spôsobom FIFO (First In First Out). Je to usporiadaný zoznam objektov, kde vkladanie prvkov prebieha na konci zoznamu a odstraňovanie prvkov na začiatku zoznamu.
v porovnaní s reťazcami v jazyku Java
Keďže ide o rozhranie, front vyžaduje na deklaráciu konkrétnu triedu a najbežnejšie triedy sú LinkedList a PriorityQueue v jazyku Java. Implementácie vykonané týmito triedami nie sú bezpečné pre vlákna. Ak sa vyžaduje implementácia bezpečnej pre vlákna, dostupná možnosť je PriorityBlockingQueue.
Vyhlásenie o rozhraní frontu
public interface Queue extends Collection
Metódy rozhrania Java Queue Interface
Metóda | Popis |
---|---|
boolovské pridanie (objekt) | Používa sa na vloženie určeného prvku do tohto frontu a po úspechu vráti hodnotu true. |
boolovská ponuka (objekt) | Používa sa na vloženie určeného prvku do tohto frontu. |
Object remove() | Používa sa na získanie a odstránenie hlavy tohto frontu. |
Object poll() | Používa sa na získanie a odstránenie hlavy tohto frontu alebo vráti hodnotu null, ak je tento front prázdny. |
Element objektu() | Používa sa na získanie, ale neodstráni hlavu tohto radu. |
Pohľad na objekt () | Používa sa na získanie, ale neodstráni hlavičku tohto frontu, alebo vráti hodnotu null, ak je tento front prázdny. |
Vlastnosti frontu
Nasleduje niekoľko dôležitých funkcií frontu.
- Ako už bolo uvedené, koncept FIFO sa používa na vkladanie a odstraňovanie prvkov z frontu.
- Java Queue poskytuje podporu pre všetky metódy rozhrania kolekcie vrátane vymazania, vloženia atď.
- PriorityQueue, ArrayBlockingQueue a LinkedList sú implementácie, ktoré sa používajú najčastejšie.
- Výnimka NullPointerException sa vyvolá, ak sa na BlockingQueues vykoná akákoľvek operácia null.
- Tie fronty, ktoré sú prítomné v util balíky sú známe ako Unbounded Queues.
- Tie fronty, ktoré sú prítomné v užitočné balíky sú známe ako ohraničené fronty.
- Všetky fronty okrem Deques uľahčujú odstraňovanie a vkladanie na začiatok a koniec frontu; resp. V skutočnosti to znamená vkladanie a vyberanie podporného prvku na oboch koncoch.
Trieda PriorityQueue
PriorityQueue je tiež trieda, ktorá je definovaná v rámci kolekcie, ktorá nám poskytuje spôsob spracovania objektov na základe priority. Už bolo popísané, že vkladanie a odstraňovanie objektov sa riadi vzorom FIFO vo fronte Java. Niekedy je však potrebné, aby boli prvky frontu spracované podľa priority, a to je miesto, kde vstupuje do činnosti PriorityQueue.
Deklarácia triedy PriorityQueue
Pozrime sa na deklaráciu pre triedu java.util.PriorityQueue.
public class PriorityQueue extends AbstractQueue implements Serializable
Príklad Java PriorityQueue
Názov súboru: TestCollection12.java
aký veľký je tento monitor
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()); } } }Vyskúšajte to
Výkon:
head:Amit head:Amit iterating the queue elements: Amit Jai Karan Vijay Rahul after removing two elements: Karan Rahul Vijay
Príklad Java PriorityQueue: Kniha
Pozrime sa na príklad PriorityQueue, kde pridávame knihy do poradia a tlačíme všetky knihy. Prvky v PriorityQueue musia byť typu Porovnateľné. Triedy String a Wrapper sú štandardne porovnateľné. Ak chcete pridať užívateľom definované objekty do PriorityQueue, musíte implementovať porovnateľné rozhranie.
java polia
Názov súboru: 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){>