Sąsajos eilė yra java.util pakete ir išplečia Kolekcijos sąsają. Jis naudojamas elementams, kurie apdorojami „First In First Out“ (FIFO) būdu, išlaikyti. Tai sutvarkytas objektų sąrašas, kuriame elementai įterpiami sąrašo pabaigoje, o elementai pašalinami sąrašo pradžioje.
Būdama sąsaja, eilei deklaracijai reikia konkrečios klasės, o dažniausiai naudojamos klasės yra LinkedList ir PriorityQueue Java. Šių klasių įgyvendinimas nėra saugus. Jei reikalaujama, kad gijos diegimas būtų saugus, galima pasirinkti „PriorityBlockingQueue“.
Eilės sąsajos deklaracija
public interface Queue extends Collection
Java eilės sąsajos metodai
Metodas | apibūdinimas |
---|---|
loginis pridėjimas (objektas) | Jis naudojamas nurodytam elementui įterpti į šią eilę ir sėkmingai grąžinti teisingą. |
loginis pasiūlymas (objektas) | Jis naudojamas nurodytam elementui įterpti į šią eilę. |
Objekto pašalinimas () | Jis naudojamas šios eilės galvutei nuskaityti ir pašalinti. |
Objekto apklausa () | Jis naudojamas šios eilės galvutei nuskaityti ir pašalinti arba grąžinti nulį, jei ši eilė tuščia. |
Objekto elementas () | Jis naudojamas šios eilės vadovui nuskaityti, bet nepašalinti. |
Objekto žvilgsnis () | Jis naudojamas šios eilės antraštei gauti, bet nepašalina, arba grąžina nulį, jei ši eilė tuščia. |
Eilės ypatybės
Toliau pateikiamos kelios svarbios eilės ypatybės.
- Kaip aptarta anksčiau, FIFO koncepcija naudojama elementams įterpti ir ištrinti iš eilės.
- „Java Queue“ palaiko visus kolekcijos sąsajos metodus, įskaitant ištrynimą, įterpimą ir kt.
- „PriorityQueue“, „ArrayBlockingQueue“ ir „LinkedList“ yra dažniausiai naudojami diegimai.
- NullPointerException iškeliama, jei blokavimo eilėse atliekama bet kokia nulinė operacija.
- Tos eilės, kurios yra util paketai yra žinomi kaip neapribotos eilės.
- Tos eilės, kurios yra naudinga paketai yra žinomi kaip apribotos eilės.
- Visos eilės, draudžiančios Deques, palengvina pašalinimą ir įterpimą eilės pradžioje ir gale; atitinkamai. Tiesą sakant, deques palaiko elementų įdėjimą ir pašalinimą iš abiejų galų.
PriorityQueue klasė
PriorityQueue taip pat yra klasė, apibrėžta rinkimo sistemoje, kuri suteikia mums būdą apdoroti objektus pagal prioritetą. Jau aprašyta, kad objektai įterpiami ir ištrinami pagal FIFO modelį Java eilėje. Tačiau kartais eilės elementus reikia apdoroti pagal prioritetą, čia pradeda veikti PriorityQueue.
PriorityQueue klasės deklaracija
Pažiūrėkime java.util.PriorityQueue klasės deklaraciją.
public class PriorityQueue extends AbstractQueue implements Serializable
Java PriorityQueue pavyzdys
Failo pavadinimas: TestCollection12.java
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()); } } }Išbandykite dabar
Išvestis:
head:Amit head:Amit iterating the queue elements: Amit Jai Karan Vijay Rahul after removing two elements: Karan Rahul Vijay
Java PriorityQueue pavyzdys: knyga
Pažiūrėkime „PriorityQueue“ pavyzdį, kai įtraukiame knygas į eilę ir spausdiname visas knygas. PriorityQueue elementai turi būti palyginamo tipo. Pagal numatytuosius nustatymus eilutės ir įvyniojimo klasės yra palyginamos. Norėdami pridėti vartotojo apibrėžtus objektus į PriorityQueue, turite įdiegti palyginamąją sąsają.
Failo pavadinimas: 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){>