java queue queue methods
V tej vadnici bomo razpravljali o tem, kaj je čakalna vrsta v Javi, kako jo uporabiti, primer čakalne vrste Java, metode čakalne vrste Java in implementacija vmesnika čakalne vrste:
Čakalna vrsta je linearna podatkovna struktura ali zbirka v Javi, ki hrani elemente v vrstnem redu FIFO (First In, First Out).
Zbirka čakalnih vrst ima dva konca, tj. Spredaj in zadaj. Elementi so dodani zadaj in odstranjeni od spredaj.
=> Obiščite tukaj, da si ogledate serijo Java Training For All.
Kaj se boste naučili:
Kaj je čakalna vrsta Java?
Struktura podatkov čakalne vrste je predstavljena, kot je prikazano spodaj:
Kot je prikazano na zgornjem diagramu, je vrsta struktura z dvema točkama, to je začetek (spredaj) in konec (zadaj). Elementi so vstavljeni v čakalno vrsto na zadnjem koncu in odstranjeni iz čakalne vrste na sprednji strani.
V Javi je Queue vmesnik, ki je del paketa java.util. Vmesnik čakalne vrste razširja vmesnik Java Collection.
Splošna opredelitev vmesnika čakalne vrste je:
public interface Queue extends Collection
Ker je čakalna vrsta vmesnik, ga ni mogoče ustvariti. Za izvedbo funkcionalnosti vmesnika čakalne vrste potrebujemo nekaj konkretnih razredov. Dva razreda izvajata vmesnik Queue, tj. LinkedList in PriorityQueue.
Sledi nekaj glavnih značilnosti strukture podatkov o čakalni vrsti:
- Čakalna vrsta sledi vrstnemu redu FIFO (First In, First Out). To pomeni, da je element vstavljen v čakalno vrsto na koncu in odstranjen iz čakalne vrste na začetku.
- Vmesnik čakalne vrste Java ponuja vse metode vmesnika Collection, kot so vstavljanje, brisanje itd.
- LinkedList in PriorityQueue sta razreda, ki izvajata vmesnik Queue. ArrayBlockingQueue je še en razred, ki izvaja vmesnik Queue.
- Čakalne vrste, ki so del paketa java.util, lahko razvrstimo kot neomejene čakalne vrste, medtem ko so tiste, ki so v java.util.sodobnem paketu, omejene čakalne vrste.
- Deque je vrsta, ki podpira vstavljanje in brisanje z obeh koncev.
- Deque je varen pred nitmi.
- BlockingQueues so varne za nit in se uporabljajo za reševanje težav med proizvajalci in potrošniki.
- BlockingQueues ne dovoljujejo ničelnih elementov. NullPointerException se vrže, če poskusite katero koli operacijo, povezano z ničelnimi vrednostmi.
Kako uporabiti čakalno vrsto v Javi?
Za uporabo čakalne vrste v Javi moramo najprej uvoziti vmesnik čakalne vrste, kot sledi:
import java.util.queue;
Ali
import java.util.*;
Ko je ta uvožen, lahko ustvarimo čakalno vrsto, kot je prikazano spodaj:
Queue str_queue = new LinkedList ();
Ker je Queue vmesnik, za izdelavo predmeta čakalne vrste uporabljamo razred LinkedList, ki implementira vmesnik Queue.
Podobno lahko ustvarimo čakalno vrsto z drugimi konkretnimi razredi.
Queue str_pqueue = new PriorityQueue (); Queue int_queue = new ArrayDeque ();
Zdaj, ko je objekt čakalne vrste ustvarjen, lahko objekt čakalne vrste inicializiramo tako, da mu z metodo dodajanja dodamo vrednosti, kot je prikazano spodaj.
str_queue.add(“one”); str_queue.add(“two”); str_queue.add(“three”);
Primer Java Queue
import java.util.*; public class Main { public static void main(String() args) { //declare a Queue Queue str_queue = new LinkedList(); //initialize the queue with values str_queue.add('one'); str_queue.add('two'); str_queue.add('three'); str_queue.add('four'); //print the Queue System.out.println('The Queue contents:' + str_queue); } }
Izhod:
Vsebina čakalne vrste: (ena, dve, tri, štiri)
Zgornji primer prikazuje deklaracijo in inicializacijo predmeta Queue. Nato samo natisnemo vsebino čakalne vrste.
Metode čakalne vrste v Javi
V tem poglavju bomo razpravljali o metodah API za čakalno vrsto. Vmesnik čakalne vrste podpira različne operacije, kot so vstavljanje, brisanje, pokukanje itd. Nekatere operacije sprožijo izjemo, nekatere pa vrnejo določeno vrednost, ko metoda uspe ali ne uspe.
Upoštevajte, da v Javi 8 ni posebnih sprememb v zbirki Čakalne vrste. Spodnji načini so na voljo tudi v poznejših različicah Jave, kot je Java 9 itd.
Spodnja tabela povzema vse te metode.
Metoda | Prototip metode | Opis |
---|---|---|
velikost | velikost int () | Vrne velikost ali število elementov v čakalni vrsti. |
dodajte | logični dodatek (E e) | Doda element e v čakalno vrsto na koncu (rep) čakalne vrste, ne da bi kršil omejitve glede zmogljivosti. Vrne true, če je uspeh ali IllegalStateException, če je zmogljivost izčrpana. |
pokukati | E pokukajte () | Vrne glavo (spredaj) čakalne vrste, ne da bi jo odstranil. |
element | E element () | Izvede enako operacijo kot metoda peek (). Vrže NoSuchElementException, ko je vrsta prazna. |
Odstrani | E odstrani () | Odstrani glavo čakalne vrste in jo vrne. Vrže NoSuchElementException, če je vrsta prazna. |
anketa | E anketa () | Odstrani glavo čakalne vrste in jo vrne. Če je vrsta prazna, vrne nič. |
Ponudba | logična ponudba (E e) | Vstavite novi element e v čakalno vrsto, ne da bi kršili omejitve zmogljivosti. |
Ponavljanje elementov čakalne vrste
Elemente čakalne vrste lahko prehodimo bodisi z zanko forEach bodisi s pomočjo iteratorja. Spodnji program izvaja oba pristopa za prehod po čakalni vrsti.
import java.util.*; public class Main { public static void main(String() args) { //declare a Queue Queue LL_queue = new LinkedList(); //initialize the Queue LL_queue.add('Value-0'); LL_queue.add('Value-1'); LL_queue.add('Value-2'); LL_queue.add('Value-3'); //traverse the Queue using Iterator System.out.println('The Queue elements through iterator:'); Iterator iterator = LL_queue.iterator(); while(iterator.hasNext()){ String element = (String) iterator.next(); System.out.print(element + ' '); } System.out.println('
The Queue elements using for loop:'); //use new for loop to traverse the Queue for(Object object : LL_queue) { String element = (String) object; System.out.print(element + ' '); } } }
Izhod:
Elementi čakalne vrste prek iteratorja:
Vrednost-0 Vrednost-1 Vrednost-2 Vrednost-3
Elementi čakalne vrste, ki uporabljajo zanko for:
Vrednost-0 Vrednost-1 Vrednost-2 Vrednost-3
Izvajanje čakalne vrste Java
Spodnji program prikazuje metode, ki smo jih obravnavali zgoraj.
import java.util.*; public class Main { public static void main(String() args) { Queue q1 = new LinkedList(); //Add elements to the Queue q1.add(10); q1.add(20); q1.add(30); q1.add(40); q1.add(50); System.out.println('Elements in Queue:'+q1); //remove () method =>removes first element from the queue System.out.println('Element removed from the queue: '+q1.remove()); //element() => returns head of the queue System.out.println('Head of the queue: '+q1.element()); //poll () => removes and returns the head System.out.println('Poll():Returned Head of the queue: '+q1.poll()); //returns head of the queue System.out.println('peek():Head of the queue: '+q1.peek()); //print the contents of the Queue System.out.println('Final Queue:'+q1); } }
Izhod:
Elementi v čakalni vrsti: (10, 20, 30, 40, 50)
Element odstranjen iz čakalne vrste: 10
Vodja čakalne vrste: 20
Anketa (): Vrnjeni vodja čakalne vrste: 20
peek (): vodja čakalne vrste: 30
Končna vrsta: (30, 40, 50)
Izvajanje niza Java Queue Array
Izvajanje čakalne vrste ni tako enostavno kot izvajanje sklada. Prvič, vrsta vsebuje dva kazalca, zadaj in spredaj. Prav tako se različne operacije izvajajo na dveh različnih koncih.
Za izvedbo čakalne vrste z uporabo nizov najprej deklariramo matriko, ki bo vsebovala n števila elementov čakalne vrste.
Nato določimo naslednje operacije, ki jih je treba izvesti v tej čakalni vrsti.
# 1) Čakalna vrsta: Operacija za vstavljanje elementa v čakalno vrsto je Enqueue (funkcija queueEnqueue v programu). Za vstavljanje elementa na zadnji del moramo najprej preveriti, ali je vrsta polna. Če je poln, elementa ne moremo vstaviti. Če zadaj # 2) Dequeue: Postopek brisanja elementa iz čakalne vrste je Dequeue (funkcija queueDequeue v programu). Najprej preverimo, ali je vrsta prazna. Da bo dequeue delovanje delovalo, mora biti v čakalni vrsti vsaj en element. # 3) Spredaj: Ta metoda vrne sprednjo stran čakalne vrste. # 4) Zaslon: Ta metoda prečka vrsto in prikaže elemente čakalne vrste. Naslednji program Java prikazuje izvajanje vrste Array iz čakalne vrste. Izhod: Začetna vrsta: Ker smo v zgornjem programu uvedli strukturo podatkov čakalne vrste z uporabo nizov, lahko čakalno vrsto izvedemo tudi s povezanim seznamom. V tem programu bomo uporabili enake metode enqueue, dequeue, front in display. Razlika je v tem, da bomo namesto Array uporabili podatkovno strukturo Povezani seznam. Spodnji program prikazuje izvajanje čakalne vrste v povezanem seznamu v Javi. Izhod: Element 6 je dodan v čakalno vrsto BlockingQueue je vmesnik, dodan v Javi 1.5 in je del java.util.concurrent paket. Ta vmesnik uvede blokiranje v primeru, da je vrsta blokiranja polna ali prazna. Tako ko nit dostopa do čakalne vrste in poskuša vstaviti (spraviti v vrsto) elemente v čakalno vrsto, ki je že polna, je blokirana, dokler druga nit ne ustvari prostora v čakalni vrsti (morda z operacijo odstranitve iz čakalne vrste) Podobno je v primeru odpravljanja čakalnih vrst operacija blokirana, če je vrsta prazna, dokler element ne postane na voljo za operacijo razbremenitve. Metode BlockingQueue uporabljajo neko obliko nadzora hkratnosti, kot so notranje ključavnice, in so atomske. BlockingQueue je sočasna čakalna vrsta, ki hkrati upravlja operacije čakalne vrste. BlockingQueue je prikazan spodaj: BlockingQueue ne sprejema ničelnih vrednosti. Poskus vstavitve ničelne vrednosti v čakalno vrsto povzroči NullPointerException. Nekatere izvedbe BlockingQueue, ki jih ponuja Java, so LinkedBlockingQueue, PriorityBlockingQueue, ArrayBlockingQueue in SynchonousQueue. Vse te izvedbe so varne pred nitmi. BlockingQueues sta dve vrsti: V omejeni vrsti se zmogljivost čakalne vrste prenese na konstruktor čakalne vrste. Izjava o čakalni vrsti je naslednja: BlockingQueue blockingQueue = novo LinkedBlockingDeque (5); V neomejeni vrsti zmogljivosti čakalne vrste ne določimo izrecno in lahko naraste. Kapaciteta je nastavljena na Integer.MAX_VALUE. Izjava o neomejeni vrsti je naslednja: BlockingQueue blockingQueue = novo LinkedBlockingDeque (); Vmesnik BlockingQueue se uporablja predvsem za težave med proizvajalci in potrošniki, pri katerih proizvajalec proizvaja vire, potrošnik pa jih porablja. V # 1) Kaj je čakalna vrsta v Javi? Odgovor: Čakalna vrsta v Javi je linearna urejena podatkovna struktura, ki sledi vrstnemu redu elementov FIFO (First In, First Out). To pomeni, da bo prvi element, vstavljen v čakalno vrsto, prvi odstranjeni element. V Javi je čakalna vrsta implementirana kot vmesnik, ki podeduje vmesnik Collection. Q # 2) Ali je Java v čakalni vrsti varna? Odgovor: Niso vse čakalne vrste varne za nit, vendar BlockingQueues v Javi niso varne za nit. Q # 3) Kaj je hitrejše - sklad ali vrsta? Odgovor: Sklad je hitrejši. V svežnju se elementi obdelujejo samo z enega konca, zato prestavljanje ni potrebno. Toda v čakalni vrsti je treba elemente premakniti in prilagoditi, saj obstajata dva različna kazalca za vstavljanje in brisanje elementov. Q # 4) Katere so vrste čakalne vrste? Odgovor: Čakalne vrste so naslednje vrste: V # 5) Zakaj se uporablja čakalna vrsta? Odgovor: Struktura podatkov čakalne vrste se uporablja za namene sinhronizacije. Čakalna vrsta se uporablja tudi za razporejanje diskov in CPU. V tej vadnici smo razpravljali o preprostih vrstah skupaj z njihovimi podrobnostmi, kot so deklaracije, izvedba inicializacije in metode. Spoznali smo tudi izvedbo vrste Array in LinkedList Queue v Javi. V naslednjih vajah bomo podrobno razpravljali o več vrstah čakalnih vrst. => Tukaj preverite VSE Vadnice za Java. class Queue { private static int front, rear, capacity; private static int queue(); Queue(int size) { front = rear = 0; capacity = size; queue = new int(capacity); } // insert an element into the queue static void queueEnqueue(int item) { // check if the queue is full if (capacity == rear) { System.out.printf('
Queue is full
'); return; } // insert element at the rear else { queue(rear) = item; rear++; } return; } //remove an element from the queue static void queueDequeue() { // check if queue is empty if (front == rear) { System.out.printf('
Queue is empty
'); return; } // shift elements to the right by one place uptil rear else { for (int i = 0; i
Čakalna vrsta je prazna
Čakalna vrsta po operaciji čakalne vrste:
10 = 30 = 50 = 70 =
Sprednji element čakalne vrste: 10
Čakalna vrsta je polna
10 = 30 = 50 = 70 =
Čakalna vrsta po dveh operacijah odstranjevanja: 50 = 70 =
Sprednji element čakalne vrste: 50Izvajanje seznama povezanih vrst Java Queue
class LinkedListQueue { private Node front, rear; private int queueSize; // queue size //linked list node private class Node { int data; Node next; } //default constructor - initially front & rear are null; size=0; queue is empty public LinkedListQueue() { front = null; rear = null; queueSize = 0; } //check if the queue is empty public boolean isEmpty() { return (queueSize == 0); } //Remove item from the front of the queue. public int dequeue() { int data = front.data; front = front.next; if (isEmpty()) { rear = null; } queueSize--; System.out.println('Element ' + data+ ' removed from the queue'); return data; } //Add data at the rear of the queue. public void enqueue(int data) { Node oldRear = rear; rear = new Node(); rear.data = data; rear.next = null; if (isEmpty()) { front = rear; } else { oldRear.next = rear; } queueSize++; System.out.println('Element ' + data+ ' added to the queue'); } //print front and rear of the queue public void print_frontRear() { System.out.println('Front of the queue:' + front.data + ' Rear of the queue:' + rear.data); } } class Main{ public static void main(String a()){ LinkedListQueue queue = new LinkedListQueue(); queue.enqueue(6); queue.enqueue(3); queue.print_frontRear(); queue.enqueue(12); queue.enqueue(24); queue.dequeue(); queue.dequeue(); queue.enqueue(9); queue.print_frontRear(); } }
Element 3 je dodan v čakalno vrsto
Sprednji del čakalne vrste: 6 Zadnji del čakalne vrste: 3
Element 12 je dodan v čakalno vrsto
V čakalno vrsto je dodan element 24
Element 6 je odstranjen iz čakalne vrste
Element 3 odstranjen iz čakalne vrste
Element 9 je dodan v čakalno vrsto
Spredaj čakalne vrste: 12 Zadnji del čakalne vrste: 9kako odpreti datoteko .json
BlockingQueue v Javi
Vrste vrst BlockingQueue
Omejena vrsta
Neomejena čakalna vrsta
Pogosto zastavljena vprašanja
Zaključek
Priporočeno branje