Vmesnik čakalne vrste je del java.util paket in podaljša Zbirni vmesnik . Podatke shranjuje in obdeluje v vrstnem redu, kjer se elementi dodajo zadaj in odstranijo s spredaj.
Ključne funkcije
- Naročilo FIFO: Elementi se obdelujejo v vrstnem redu, ki so ga vstavili (prvi v prvem mestu).
- Brez naključnega dostopa: Za razliko od elementov seznama ni mogoče neposredno dostopati z indeksom.
- Več različic: Vključuje izvajanje priorityquee deque arraydeque in povezane listine.
- Dva sklopa metod: Različice vržejo različice (dodajte odstrani element) in varne različice (ponudite anketo pokuka).
Deklaracija vmesnika čakalne vrste Java
Vmesnik čakalne vrste je razglašen za:
Zbirka javnih vmesnikov razširi zbirko
Čakalne vrste ne moremo neposredno uskladiti, saj gre za vmesnik. Tu lahko uporabimo razred, kot sta LinkedList ali Anogityqueue, ki izvaja ta vmesnik.
Čakalna vrsta
čakalna vrsta = nov linkedList (); prolog jezik
Zdaj pa najprej pojdimo skozi preprost primer, potem se bomo globoko potopili v članek.
Primer: Osnovna čakalna vrsta z uporabo linkedList
Javaimport java.util.LinkedList; import java.util.Queue; public class Geeks { public static void main(String args[]) { // Create a Queue of Integers using LinkedList Queue<Integer> q = new LinkedList<>(); System.out.println('Queue elements: ' + q); } }
Izhod
Queue elements: []
Če je vmesnik čakalna vrsta, potrebuje konkreten razred za deklaracijo in najpogostejši razredi so Prulityqueue in LinkedList v Javi. Upoštevajte, da nobena od teh izvedb ni varna. PriorityBlockingqueue je ena alternativna izvedba, če je potrebna izvedba varne niti.
shilpa shetty starost
Ustvarjanje predmetov v čakalni vrsti
Čakalna vrsta je vmesnik, tako da predmetov ni mogoče ustvariti iz vrste vrste. Vedno potrebujemo razred, ki razširi ta seznam, da ustvari predmet. In tudi po uvedbi Generics V Java 1.5 je mogoče omejiti vrsto predmeta, ki ga je mogoče shraniti v čakalni vrsti. To vrsto varna čakalna vrsta je mogoče opredeliti kot:
Java// Obj is the type of the object to be stored in Queue Queue<Obj> queue = new PriorityQueue<Obj> ();
Skupne metode
Vmesnik čakalne vrste ponuja več načinov za dodajanje odstranjevanja in pregledovanja elementov v čakalni vrsti. Tu je nekaj najpogosteje uporabljenih metod:
- Dodaj (element) : Doda element na zadnji del čakalne vrste. Če je čakalna vrsta polna, vrže izjemo.
- ponudba (element): Doda element na zadnji del čakalne vrste. Če je čakalna vrsta polna, se vrne napačno.
- odstrani () : Odstrani in vrne element na sprednji strani čakalne vrste. Če je čakalna vrsta prazna, vrže izjemo.
- anketa ():: Odstrani in vrne element na sprednji strani čakalne vrste. Če je čakalna vrsta prazna, se vrne NULL.
- element (): Vrne element na sprednji strani čakalne vrste, ne da bi ga odstranil. Če je čakalna vrsta prazna, vrže izjemo.
- peek () : Vrne element na sprednji strani čakalne vrste, ne da bi ga odstranil. Če je čakalna vrsta prazna, se vrne NULL.
Primer 1: Ta primer prikazuje operacije čakalnih vrst.
Javaimport java.util.LinkedList; import java.util.Queue; public class Geeks { public static void main(String[] args) { Queue<String> queue = new LinkedList<>(); // add elements to the queue queue.add('apple'); queue.add('banana'); queue.add('cherry'); System.out.println('Queue: ' + queue); // remove the element at the front of the queue String front = queue.remove(); System.out.println('Removed element: ' + front); // print the updated queue System.out.println('Queue after removal: ' + queue); // add another element to the queue queue.add('date'); // peek at the element at the front of the queue String peeked = queue.peek(); System.out.println('Peeked element: ' + peeked); // print the updated queue System.out.println('Queue after peek: ' + queue); } }
Izhod
Queue: [apple banana cherry] Removed element: apple Queue after removal: [banana cherry] Peeked element: banana Queue after peek: [banana cherry date]
Primer 2 :
Javaimport java.util.LinkedList; import java.util.Queue; public class Geeks { public static void main(String[] args){ Queue<Integer> q = new LinkedList<>(); // Adds elements {0 1 2 3 4} to the queue for (int i = 0; i < 5; i++) q.add(i); // Display contents of the queue System.out.println('Elements of queue: ' + q); // To remove the head of queue int removedele = q.remove(); System.out.println('Removed element:'+ removedele); System.out.println(q); // To view the head of queue int head = q.peek(); System.out.println('Head of queue:'+ head); // Rest all methods of collection interface like size and contains can be used with this implementation. int size = q.size(); System.out.println('Size of queue:' + size); } }
Izhod
Elements of queue: [0 1 2 3 4] Removed element:0 [1 2 3 4] Head of queue:1 Size of queue:4
Razredi, ki izvajajo vmesnik čakalne vrste
1. Priorityqueue
Prednostni priključek nam omogoča obdelavo elementov na podlagi njihove prednostne naloge namesto običajnega vrstnega reda FIFO v običajni čakalni vrsti. Koristno je, kadar je treba elemente obravnavati v prednostni vrstnem redu. Tukaj je opisano, kako lahko s tem razredom ustvarimo čakalno vrsto.
Primer:
negacija diskretne matematikeJava
import java.util.*; class Geeks { public static void main(String args[]){ // Creating empty priority queue Queue<Integer> pq = new PriorityQueue<Integer>(); // Adding items to the pQueue using add() pq.add(10); pq.add(20); pq.add(15); // Printing the top element of the PriorityQueue System.out.println(pq.peek()); // Printing the top element and removing it the PriorityQueue container System.out.println(pq.poll()); // Printing the top element again System.out.println(pq.peek()); } }
Izhod
10 10 15
2. LinkedList
LinkedList je linearna struktura podatkov, kjer se elementi shranijo kot ločeni predmeti, ki vsebujejo podatke, in povezavo do naslednjega elementa. Elementi so povezani s kazalci, ki niso shranjeni v neprekinjenem pomnilniku. Tukaj je opisano, kako lahko s tem razredom ustvarimo čakalno vrsto.
Primer:
Javaimport java.util.*; class Geeks { public static void main(String args[]) { // Creating empty LinkedList Queue<Integer> ll = new LinkedList<Integer>(); // Adding items to the ll using add() ll.add(10); ll.add(20); ll.add(15); // Printing the top element of the LinkedList System.out.println(ll.peek()); // Printing the top element and removing it from the LinkedList container System.out.println(ll.poll()); // Printing the top element again System.out.println(ll.peek()); } }
Izhod
10 10 20
3. PriorityBlockingqueue
PriorityBlockingQueue je neobdelana vrsta blokiranja, ki je varna, ki naroči elemente, kot je priorityqueue, in podpira blokiranje iskanja. Ker je neobremenjen dodajanje elementov, še vedno ne morejo uspeti, če se pomnilnik zmanjka. Tukaj je opisano, kako ustvariti čakalno vrsto s pomočjo tega razreda.
Primer:
pretvarjanje niza v datumJava
import java.util.concurrent.PriorityBlockingQueue; import java.util.*; class Geeks { public static void main(String args[]) { // Creating empty priority blocking queue Queue<Integer> pbq = new PriorityBlockingQueue<Integer>(); // Adding items to the pbq using add() pbq.add(10); pbq.add(20); pbq.add(15); // Printing the top element of the PriorityBlockingQueue System.out.println(pbq.peek()); // Printing the top element and removing it from the PriorityBlockingQueue System.out.println(pbq.poll()); // Printing the top element again System.out.println(pbq.peek()); } }
Izhod
10 10 15
Različne operacije na vmesniku čakalne vrste s pomočjo razreda Priorityqueue
1. dodajanje elementov
Za dodajanje elementa v čakalni vrsti lahko uporabimo Dodaj () metoda . Naročilo za vstavljanje se ne zadržuje v priorityqueue. Elementi so shranjeni na podlagi prednostnega vrstnega reda, ki se privzeto narašča.
Primer:
Javaimport java.util.*; public class Geeks { public static void main(String args[]) { Queue<String> pq = new PriorityQueue<>(); pq.add('Geeks'); pq.add('For'); pq.add('Geeks'); System.out.println(pq); } }
Izhod
[For Geeks Geeks]
2. Odstranjevanje elementov
Za odstranitev elementa iz čakalne vrste lahko uporabimo odstrani () metoda. Če obstaja več predmetov, se odstrani prvi pojav predmeta. The metoda ankete () se uporablja tudi za odstranjevanje glave in vrnitev.
Primer:
ima naslednjo javoJava
import java.util.*; public class Geeks { public static void main(String args[]) { Queue<String> pq = new PriorityQueue<>(); pq.add('Geeks'); pq.add('For'); pq.add('Geeks'); System.out.println('Initial Queue: ' + pq); pq.remove('Geeks'); System.out.println('After Remove: ' + pq); System.out.println('Poll Method: ' + pq.poll()); System.out.println('Final Queue: ' + pq); } }
Izhod
Initial Queue: [For Geeks Geeks] After Remove: [For Geeks] Poll Method: For Final Queue: [Geeks]
3. Ponavljanje čakalne vrste
Obstaja več načinov za ponovitev v čakalni vrsti. Najbolj znan način je pretvorba čakalne vrste v matriko in prečkanje s pomočjo za zanko . V čakalni vrsti je tudi vgrajen iterator, ki ga je mogoče uporabiti za ponovitev skozi čakalno vrsto.
Primer:
Javaimport java.util.*; public class Geeks { public static void main(String args[]) { Queue<String> pq = new PriorityQueue<>(); pq.add('Geeks'); pq.add('For'); pq.add('Geeks'); Iterator iterator = pq.iterator(); while (iterator.hasNext()) { System.out.print(iterator.next() + ' '); } } }
Izhod
For Geeks Geeks
Metode vmesnika čakalne vrste
Tu je celoten seznam metod za čakalno vrsto
Metoda | Opis |
|---|---|
| Boolean Add (e e) | Vstavi element; vrže izjemo, če je polna. |
| Boolejska ponudba (e e) | Vstavi element; Vrne false, če je polno. |
| E odstrani () | Odstrani glavo; vrže izjemo, če je prazna. |
| E anketa () | Odstrani glavo; Vrne NULL, če je prazno. |
| In element () | Pridobi glavo; vrže izjemo, če je prazna. |
| E peek () | Pridobi glavo; Vrne NULL, če je prazno. |
| Boolean Addall (zbirka extends E>c) | Doda vse elemente iz druge zbirke. |
| void clear () | Odstrani vse elemente. |
| Boolean vsebuje (predmet O) | Preverja, ali obstaja element. |
| Boolean vsebuje (zbirka>c) | Preveri, ali obstajajo vsi elementi. |
| Boolean enak (predmet O) | Primerja z drugo zbirko. |
| int hashcode () | Vrne hash kodo. |
| Boolean isEmpty () | Preveri, ali je zbirka prazna. |
| Iterator | Vrne iterator za elemente. |
| Boolean odstrani (predmet O) | Odstrani določen element. |
| Boolean odstranjevanje (zbirka>c) | Odstrani vse ujemajoče se elemente. |
| Boolean zadrževalni (zbirka>c) | Hrani samo določene elemente. |
| int size () | Vrne število elementov. |
| Objekt [] toarray () | Vrne elemente kot matriko. |
| Vrne elemente kot tipkani niz. | |
| Privzeta void Foreach (potrošnik super E>dejanje) | Izvaja dejanje za vsak element. |
| Privzeta void Foreach (potrošnik super E>dejanje) | Izvaja dejanje za vsak element. |
| privzeti Spliterator | Vrne spliterator. |
| privzeti tok | Vrne zaporedni tok. |
| privzeti tok | Vrne vzporedni tok. |