logo

Vmesnik čakalne vrste v Javi

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

Java
import 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.

Java
import 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 :

Java
import 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 matematike
Java
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:

Java
import 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 datum
Java
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:

Java
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(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 javo
Java
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:

Java
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');  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 vrstovmesnik v Javi, skupaj z vsemi metodami, ki jih podeduje iz zbirkein itarable.

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 (zbirkac)Doda vse elemente iz druge zbirke.
void clear ()Odstrani vse elemente.
Boolean vsebuje (predmet O)Preverja, ali obstaja element.
Boolean vsebuje (zbirkac)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.
Iteratoriterator ()Vrne iterator za elemente.
Boolean odstrani (predmet O)Odstrani določen element.
Boolean odstranjevanje (zbirkac)Odstrani vse ujemajoče se elemente.
Boolean zadrževalni (zbirkac)Hrani samo določene elemente.
int size ()Vrne število elementov.
Objekt [] toarray ()Vrne elemente kot matriko.
T [] toarray (t [] a)Vrne elemente kot tipkani niz.
Privzeta void Foreach (potrošnikdejanje)Izvaja dejanje za vsak element.
Privzeta void Foreach (potrošnikdejanje)Izvaja dejanje za vsak element.
privzeti SpliteratorSpiterator ()Vrne spliterator.
privzeti toktok ()Vrne zaporedni tok.
privzeti tokParallelStream ()Vrne vzporedni tok.