logo

Eilės sąsaja Java

Eilės sąsaja yra java.util paketą ir pratęsia Kolekcijos sąsaja naudojamas elementams, kuriuos ketinama apdoroti, laikyti FIFO (First In First Out) tvarka. Tai sutvarkytas objektų sąrašas, kurio naudojimas apsiriboja elementų įterpimu sąrašo pabaigoje ir elementų pašalinimu iš sąrašo pradžios (t. y.), jis seka FIFO arba principą „pirmas į pirmus“.

Queue-Deque-PriorityQueue-In-Java



Kadangi eilėje yra sąsaja, deklaracijai reikia konkrečios klasės, o dažniausiai naudojamos klasės PriorityQueue ir LinkedList Java kalboje. Atminkite, kad nė vienas iš šių diegimų nėra saugus nuo gijų. PriorityBlockingQueue yra vienas iš alternatyvių diegimo būdų, jei reikalingas saugus diegimas.

Deklaracija: Eilės sąsaja deklaruojama taip:

public interface Queue extends Collection>

Eilės objektų kūrimas: Nuo Eilė yra sąsaja , objektų negalima sukurti iš tipo eilės. Mums visada reikia klasės, kuri praplečia šį sąrašą, kad galėtume sukurti objektą. Ir taip pat po įvedimo Generics Java 1.5 versijoje galima apriboti objekto tipą, kuris gali būti saugomas eilėje. Ši saugaus tipo eilė gali būti apibrėžta kaip:



// Obj is the type of the object to be stored in Queue  Queue queue = new PriorityQueue ();>

„Java“ programoje „Queue“ sąsaja yra rinkinio sąsajos potipis ir nurodo elementų rinkinį tam tikra tvarka. Jame laikomasi FIFO principo, o tai reiškia, kad elementai nuskaitomi tokia tvarka, kokia jie buvo įtraukti į eilę.

Eilės sąsaja suteikia keletą būdų, kaip pridėti, pašalinti ir tikrinti eilės elementus. Štai keletas dažniausiai naudojamų metodų:

add(element): Prideda elementą eilės gale. Jei eilė pilna, tai daro išimtį.



pasiūlymas(elementas): prideda elementą eilės gale. Jei eilė pilna, ji grąžina klaidingą.

pašalinti (): pašalina ir grąžina elementą eilės priekyje. Jei eilė tuščia, tai daro išimtį.

poll(): pašalina ir grąžina elementą eilės priekyje. Jei eilė tuščia, ji grąžina nulį.

10 iš 50.00

element(): Grąžina elementą eilės priekyje jo nepašalinant. Jei eilė tuščia, tai daro išimtį.

peek(): grąžina elementą eilės priekyje jo nepašalinant. Jei eilė tuščia, ji grąžina nulį.

„Queue“ sąsają įdiegia kelios „Java“ klasės, įskaitant „LinkedList“, „ArrayDeque“ ir „PriorityQueue“. Kiekviena iš šių klasių pateikia skirtingą eilės sąsajos įgyvendinimą su skirtingomis veikimo charakteristikomis ir funkcijomis.

Apskritai, eilės sąsaja yra naudingas įrankis elementų rinkiniams tvarkyti tam tikra tvarka ir yra plačiai naudojama daugelyje skirtingų programų ir pramonės šakų.

Pavyzdys:

Java




import> java.util.LinkedList;> import> java.util.Queue;> public> class> QueueExample {> >public> static> void> main(String[] args) {> >Queue queue =>new> LinkedList();> >// add elements to the queue> >queue.add(>'apple'>);> >queue.add(>'banana'>);> >queue.add(>'cherry'>);> >// print the queue> >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);> >}> }>

>

>

Išvestis

Queue: [apple, banana, cherry] Removed element: apple Queue after removal: [banana, cherry] Peeked element: banana Queue after peek: [banana, cherry, date]>

Pavyzdys: Eilė

Java




// Java program to demonstrate a Queue> import> java.util.LinkedList;> import> java.util.Queue;> public> class> QueueExample {> >public> static> void> main(String[] args)> >{> >Queue 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);> >}> }>

>

>

Išvestis

Elements of queue [0, 1, 2, 3, 4] removed element-0 [1, 2, 3, 4] head of queue-1 Size of queue-4>

Eilės sąsajos operacijos

Pažiūrėkime, kaip eilėje atlikti kelias dažnai naudojamas operacijas naudojant Prioritetinė eilės klasė .

1. Elementų pridėjimas: Norėdami įtraukti elementą į eilę, galime naudoti add() metodas . PriorityQueue įterpimo tvarka neišsaugoma. Elementai saugomi pagal prioriteto tvarką, kuri pagal numatytuosius nustatymus yra didėjanti.

Pavyzdys

Java




// Java program to add elements> // to a Queue> import> java.util.*;> public> class> GFG {> >public> static> void> main(String args[])> >{> >Queue pq =>new> PriorityQueue();> >pq.add(>'Geeks'>);> >pq.add(>'For'>);> >pq.add(>'Geeks'>);> >System.out.println(pq);> >}> }>

>

char į eilutę

>

Išvestis

[For, Geeks, Geeks]>

2. Elementų pašalinimas: Norėdami pašalinti elementą iš eilės, galime naudoti pašalinti () metodą. Jei tokių objektų yra keli, tada pirmasis objekto įvykis pašalinamas. Be to, norint pašalinti galvą ir ją grąžinti, taip pat naudojamas poll() metodas.

Pavyzdys

Java




// Java program to remove elements> // from a Queue> import> java.util.*;> public> class> GFG {> >public> static> void> main(String args[])> >{> >Queue 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);> >}> }>

>

>

Išvestis

Initial Queue [For, Geeks, Geeks] After Remove [For, Geeks] Poll Method For Final Queue [Geeks]>

3. Eilės kartojimas: Yra keli būdai, kaip kartoti eilę. Garsiausias būdas yra konvertuoti eilę į masyvą ir pereiti naudojant for kilpą. Tačiau eilėje taip pat yra integruotas iteratorius, kurį galima naudoti eilėje kartoti.

java eilutės funkcijos

Pavyzdys

Java




// Java program to iterate elements> // to a Queue> import> java.util.*;> public> class> GFG {> >public> static> void> main(String args[])> >{> >Queue pq =>new> PriorityQueue();> >pq.add(>'Geeks'>);> >pq.add(>'For'>);> >pq.add(>'Geeks'>);> >Iterator iterator = pq.iterator();> >while> (iterator.hasNext()) {> >System.out.print(iterator.next() +>' '>);> >}> >}> }>

>

>

Išvestis

For Geeks Geeks>

Eilės ypatybės: Toliau pateikiamos eilės ypatybės:

  • Eilė naudojama elementams įterpti eilės pabaigoje ir pašalinama iš eilės pradžios. Tai atitinka FIFO koncepciją.
  • „Java Queue“ palaiko visus kolekcijos sąsajos metodus, įskaitant įterpimą, ištrynimą ir kt.
  • LinkedList , ArrayBlockingQueue ir PriorityQueue yra dažniausiai naudojami diegimai.
  • Jei blokavimo eilėse atliekama bet kokia nulinė operacija, metama NullPointerException.
  • Eilės, kurios yra java.util pakete, yra neapribotos eilės.
  • Eilės, kurios yra java.util.concurrent pakete, yra apribotos eilės.
  • Visos eilės, išskyrus Deques, palaiko įterpimą ir pašalinimą atitinkamai eilės gale ir pradžioje. Deques atraminio elemento įdėjimas ir pašalinimas iš abiejų galų.

Klasės, kuriose įdiegta eilės sąsaja:

1. PriorityQue: PriorityQueue klasė, įdiegta rinkimo sistemoje, suteikia mums būdą apdoroti objektus pagal prioritetą. Yra žinoma, kad eilė vadovaujasi „First-In-First-Out“ algoritmu, tačiau kartais eilės elementus reikia apdoroti pagal prioritetą, tada pradeda veikti „PriorityQueue“. Pažiūrėkime, kaip sukurti eilės objektą naudojant šią klasę.

Pavyzdys

Java




// Java program to demonstrate the> // creation of queue object using the> // PriorityQueue class> import> java.util.*;> class> GfG {> >public> static> void> main(String args[])> >{> >// Creating empty priority queue> >Queue pQueue> >=>new> PriorityQueue();> >// Adding items to the pQueue> >// using add()> >pQueue.add(>10>);> >pQueue.add(>20>);> >pQueue.add(>15>);> >// Printing the top element of> >// the PriorityQueue> >System.out.println(pQueue.peek());> >// Printing the top element and removing it> >// from the PriorityQueue container> >System.out.println(pQueue.poll());> >// Printing the top element again> >System.out.println(pQueue.peek());> >}> }>

>

>

Išvestis

10 10 15>

2. Susietas sąrašas: LinkedList yra klasė, kuri yra įdiegta rinkimo sistemoje, kuri iš esmės įgyvendina Pavyzdys

Java




// Java program to demonstrate the> // creation of queue object using the> // LinkedList class> import> java.util.*;> class> GfG {> >public> static> void> main(String args[])> >{> >// Creating empty LinkedList> >Queue ll> >=>new> LinkedList();> >// 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());> >}> }>

kaip išjungti kūrėjo režimą „Android“.

>

>

Išvestis

10 10 20>

3. PriorityBlockingQueue: Pažymėtina, kad tiek diegimai, tiek „PriorityQueue“, tiek „LinkedList“ nėra saugūs. „PriorityBlockingQueue“ yra vienas iš alternatyvių diegimo būdų, jei reikalingas saugus diegimas. PriorityBlockingQueue yra neapribota blokavimo eilė, kuri naudoja tas pačias eilės tvarka kaip klasė PriorityQueue ir tiekimas, blokuojantis paieškos operacijas.
Kadangi jis neapribotas, kartais gali nepavykti pridėti elementų, nes išeikvoti ištekliai OutOfMemory Error . Pažiūrėkime, kaip sukurti eilės objektą naudojant šią klasę.

Pavyzdys

Java




// Java program to demonstrate the> // creation of queue object using the> // PriorityBlockingQueue class> import> java.util.concurrent.PriorityBlockingQueue;> import> java.util.*;> class> GfG {> >public> static> void> main(String args[])> >{> >// Creating empty priority> >// blocking queue> >Queue pbq> >=>new> PriorityBlockingQueue();> >// 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());> >}> }>

>

>

Išvestis

10 10 15>

Eilių sąsajos metodai

Eilės sąsaja paveldi visus metodus, esančius kolekcijų sąsaja įgyvendinant šiuos metodus:

Metodas

apibūdinimas

pridėti (int indeksas, elementas) Šis metodas naudojamas elementui įtraukti į tam tikrą indeksą eilėje. Kai perduodamas vienas parametras, jis tiesiog prideda elementą eilės pabaigoje.
addAll (int indeksas, kolekcijos rinkinys) Šis metodas naudojamas norint į eilę įtraukti visus nurodytos kolekcijos elementus. Kai perduodamas vienas parametras, jis prideda visus nurodytos kolekcijos elementus eilės pabaigoje.
dydis () Šis metodas naudojamas norint grąžinti eilės dydį.
aišku () Šis metodas naudojamas pašalinti visus eilės elementus. Tačiau sukurtos eilės nuoroda vis tiek saugoma.
pašalinti () Šis metodas naudojamas elementui pašalinti iš eilės priekio.
pašalinti (int index) Šis metodas pašalina elementą iš nurodyto indekso. Jis perkelia paskesnius elementus (jei yra) į kairę ir sumažina jų indeksus 1.
pašalinti (elementas) Šis metodas naudojamas pašalinti ir grąžinti pirmąjį nurodyto elemento atvejį eilėje.
gauti (int index) Šis metodas grąžina elementus pagal nurodytą indeksą.
rinkinys (int indeksas, elementas) Šis metodas pakeičia tam tikro indekso elementus nauju elementu. Ši funkcija grąžina elementą, kuris ką tik buvo pakeistas nauju elementu.
indexOf(elementas) Šis metodas grąžina pirmąjį nurodyto elemento pasireiškimą arba -1 jei elemento nėra eilėje.
lastIndexOf(elementas) Šis metodas grąžina paskutinį nurodyto elemento pasireiškimą arba -1 jei elemento nėra eilėje.
lygus (elementas) Šis metodas naudojamas lyginant pateikto elemento lygybę su eilės elementais.
maišos kodas () Šis metodas naudojamas duotosios eilės maišos kodo reikšmei grąžinti.
Yra tuščias() Šis metodas naudojamas norint patikrinti, ar eilė tuščia, ar ne. Grąžina tiesa, jei eilė tuščia, kitu atveju – false.
yra (elementas) Šis metodas naudojamas patikrinti, ar eilėje yra nurodytas elementas, ar ne. Grąžinama tiesa, jei eilėje yra elementas.
yra viskas (kolekcijos kolekcija) Šis metodas naudojamas patikrinti, ar eilėje yra visas elementų rinkinys.
rūšiuoti (palyginimo komparavimas) Šis metodas naudojamas eilės elementams rūšiuoti pagal pateiktą lyginamoji priemonė .
loginis pridėjimas (objektas) Šis metodas naudojamas nurodytam elementui įterpti į eilę ir sėkmingai grąžinti teisingą.
loginis pasiūlymas (objektas) Šis metodas naudojamas nurodytam elementui įterpti į eilę.
Objekto apklausa () Šis metodas naudojamas norint gauti ir pašalinti eilės antraštę arba grąžina nulį, jei eilė tuščia.
Objekto elementas () Šis metodas naudojamas norint gauti, bet nepašalinti eilės viršūnės.
Objekto žvilgsnis () Šis metodas naudojamas norint nuskaityti, bet nepašalinti šios eilės galvos arba grąžinti nulį, jei ši eilė tuščia.

„Java“ eilės sąsajos naudojimo pranašumai:

Užsakymo išsaugojimas : Eilės sąsaja suteikia galimybę saugoti ir gauti elementus tam tikra tvarka, vadovaujantis FIFO principu.

Lankstumas : Eilės sąsaja yra rinkinio sąsajos potipis, o tai reiškia, kad ją galima naudoti su daugybe skirtingų duomenų struktūrų ir algoritmų, atsižvelgiant į programos reikalavimus.

Siūlas saugumo : Kai kurie eilės sąsajos diegimai, pvz., java.util.concurrent.ConcurrentLinkedQueue klasė, yra saugūs gijose, o tai reiškia, kad juos vienu metu gali pasiekti kelios gijos, nesukeliant konfliktų.

Spektaklis : Eilės sąsaja užtikrina efektyvų elementų pridėjimo, pašalinimo ir tikrinimo įgyvendinimą, todėl tai yra naudinga priemonė elementų rinkiniams tvarkyti svarbiose programose.

„Java“ sąsajos „Queue“ naudojimo trūkumai:

Ribotas funkcionalumas: Eilės sąsaja sukurta specialiai elementų rinkiniams tvarkyti tam tikra tvarka, o tai reiškia, kad ji gali netikti sudėtingesnėms duomenų struktūroms ar algoritmams.

Dydžio apribojimai: Kai kurie „Queue“ sąsajos diegimai, tokie kaip „ArrayDeque“ klasė, turi fiksuotą dydį, o tai reiškia, kad jie negali augti daugiau nei tam tikras elementų skaičius.

Atminties naudojimas: Priklausomai nuo įgyvendinimo, eilės sąsajai gali prireikti daugiau atminties nei kitoms duomenų struktūroms, ypač jei reikia saugoti papildomą informaciją apie elementų tvarką.

Sudėtingumas : Eilės sąsaja gali būti sunkiai naudojama ir suprantama pradedantiesiems programuotojams, ypač jei jie nėra susipažinę su duomenų struktūrų ir algoritmų principais.