Interfeisa rinda ir pieejama pakotnē java.util un paplašina kolekcijas saskarni. To izmanto, lai saglabātu elementus, kas tiek apstrādāti FIFO (First In First Out) veidā. Tas ir sakārtots objektu saraksts, kurā elementu ievietošana notiek saraksta beigās, bet elementu noņemšana notiek saraksta sākumā.
Tā kā rinda ir saskarne, deklarācijai ir nepieciešama konkrēta klase, un visizplatītākās klases ir LinkedList un PriorityQueue Java. Šo klašu veiktās ieviešanas nav drošas. Ja ir nepieciešama pavediena droša ieviešana, PriorityBlockingQueue ir pieejama opcija.
Rindas interfeisa deklarācija
public interface Queue extends Collection
Java rindas interfeisa metodes
Metode | Apraksts |
---|---|
Būla pievienošana(objekts) | To izmanto, lai šajā rindā ievietotu norādīto elementu un pēc panākumiem atgrieztu patiesu. |
Būla piedāvājums (objekts) | To izmanto, lai šajā rindā ievietotu norādīto elementu. |
Objekta noņemšana () | To izmanto, lai izgūtu un noņemtu šīs rindas galvu. |
Objekta aptauja() | To izmanto, lai izgūtu un noņemtu šīs rindas galveni, vai atgriež nulli, ja šī rinda ir tukša. |
Objekta elements() | To izmanto, lai izgūtu, bet nenoņemtu šīs rindas galvu. |
Objekta apskate () | To izmanto, lai izgūtu, bet nenoņemtu šīs rindas galveni, vai atgriež nulli, ja šī rinda ir tukša. |
Rindas iezīmes
Tālāk ir norādītas dažas svarīgas rindas iezīmes.
- Kā minēts iepriekš, FIFO koncepcija tiek izmantota elementu ievietošanai un dzēšanai no rindas.
- Java rinda nodrošina atbalstu visām kolekcijas saskarnes metodēm, tostarp dzēšanai, ievietošanai utt.
- PriorityQueue, ArrayBlockingQueue un LinkedList ir visbiežāk izmantotās implementācijas.
- NullPointerException tiek paaugstināts, ja blokādes rindā tiek veikta nulles darbība.
- Tās rindas, kas atrodas sadaļā util pakotnes ir zināmas kā neierobežotas rindas.
- Tās rindas, kas atrodas sadaļā noderīga pakotnes ir zināmas kā ierobežotas rindas.
- Visas rindas, kas aizliedz Deques, atvieglo noņemšanu un ievietošanu rindas sākumā un beigās; attiecīgi. Faktiski deques atbalsta elementu ievietošanu un izņemšanu abos galos.
PriorityQueue klase
PriorityQueue ir arī klase, kas ir definēta kolekcijas sistēmā, kas dod mums iespēju apstrādāt objektus, pamatojoties uz prioritāti. Jau ir aprakstīts, ka objektu ievietošana un dzēšana Java rindā notiek pēc FIFO parauga. Tomēr dažreiz rindas elementi ir jāapstrādā atbilstoši prioritātei, tāpēc tiek aktivizēta PriorityQueue.
PriorityQueue klases deklarācija
Apskatīsim deklarāciju klasei java.util.PriorityQueue.
public class PriorityQueue extends AbstractQueue implements Serializable
Java PriorityQueue piemērs
Faila nosaukums: 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()); } } }Izmēģiniet to tūlīt
Izvade:
java nosaukumu piešķiršanas konvencija
head:Amit head:Amit iterating the queue elements: Amit Jai Karan Vijay Rahul after removing two elements: Karan Rahul Vijay
Java PriorityQueue piemērs: grāmata
Apskatīsim PriorityQueue piemēru, kur mēs pievienojam grāmatas rindai un drukājam visas grāmatas. PriorityQueue elementiem ir jābūt Comparable tipa. Virknes un Iesaiņojuma klases pēc noklusējuma ir salīdzināmas. Lai PriorityQueue pievienotu lietotāja definētus objektus, ir jāievieš salīdzināms interfeiss.
Faila nosaukums: 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){>