Käyttöliittymäjono on saatavilla java.util-paketissa ja laajentaa Collection-käyttöliittymää. Sitä käytetään pitämään elementit, jotka käsitellään FIFO (First In First Out) -tavalla. Se on järjestetty objektiluettelo, jossa elementit lisätään luettelon loppuun ja elementtien poisto tapahtuu luettelon alussa.
Rajapintana jono vaatii ilmoitusta varten konkreettisen luokan, ja yleisimmät luokat ovat LinkedList ja PriorityQueue Javassa. Näiden luokkien toteuttamat toteutukset eivät ole säikeen turvallisia. Jos vaaditaan säikeen turvallinen toteutus, PriorityBlockingQueue on käytettävissä vaihtoehto.
Jonon käyttöliittymän ilmoitus
public interface Queue extends Collection
Java-jonoliittymän menetelmät
Menetelmä | Kuvaus |
---|---|
boolen lisäys(objekti) | Sitä käytetään lisäämään määritetty elementti tähän jonoon ja palauttamaan true onnistuessaan. |
boolen tarjous(objekti) | Sitä käytetään määritetyn elementin lisäämiseen tähän jonoon. |
Objektin poistaminen() | Sitä käytetään tämän jonon pään hakemiseen ja poistamiseen. |
Objektikysely() | Sitä käytetään hakemaan ja poistamaan tämän jonon pää tai palauttamaan nollan, jos tämä jono on tyhjä. |
Objektielementti() | Sitä käytetään tämän jonon pään hakemiseen, mutta se ei poista sitä. |
Object peek () | Sitä käytetään tämän jonon pään hakemiseen, mutta se ei poista sitä, tai palauttaa nolla-arvon, jos tämä jono on tyhjä. |
Jonon ominaisuudet
Seuraavassa on joitain tärkeitä jonon ominaisuuksia.
- Kuten aiemmin mainittiin, FIFO-konseptia käytetään elementtien lisäämiseen ja poistamiseen jonosta.
- Java-jono tukee kaikkia Collection-rajapinnan menetelmiä, mukaan lukien poistaminen, lisääminen jne.
- PriorityQueue, ArrayBlockingQueue ja LinkedList ovat useimmin käytetyt toteutukset.
- NullPointerException nostetaan esiin, jos jokin nollatoiminto suoritetaan BlockingQueuesissa.
- Ne jonot, jotka ovat läsnä util Paketit tunnetaan nimellä Unbounded Queues.
- Ne jonot, jotka ovat läsnä hyödyllinen pakettia kutsutaan rajoittuneiksi jonoiksi.
- Kaikki jonot, jotka estävät dequet, helpottavat poistamista ja lisäämistä jonon kärkeen ja loppupäähän; vastaavasti. Itse asiassa deques tukee elementtien lisäämistä ja poistamista molemmista päistä.
PriorityQueue Class
PriorityQueue on myös kokoelmakehyksessä määritelty luokka, joka antaa meille tavan käsitellä kohteita prioriteetin perusteella. On jo kuvattu, että objektien lisääminen ja poistaminen noudattaa FIFO-kuviota Java-jonossa. Joskus jonon elementit on kuitenkin käsiteltävä prioriteetin mukaan, jolloin PriorityQueue tulee toimeen.
PriorityQueue-luokan ilmoitus
Katsotaanpa luokan java.util.PriorityQueue ilmoitus.
public class PriorityQueue extends AbstractQueue implements Serializable
Java PriorityQueue -esimerkki
Tiedoston nimi: 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()); } } }Testaa nyt
Lähtö:
head:Amit head:Amit iterating the queue elements: Amit Jai Karan Vijay Rahul after removing two elements: Karan Rahul Vijay
Java PriorityQueue Esimerkki: Kirja
Katsotaanpa esimerkkiä PriorityQueue:sta, jossa lisäämme kirjoja jonoon ja tulostamme kaikki kirjat. PriorityQueuen elementtien on oltava tyyppiä Comparable. String- ja Wrapper-luokat ovat oletuksena vertailukelpoisia. Jos haluat lisätä käyttäjän määrittämiä objekteja PriorityQueueen, sinun on otettava käyttöön vertailukelpoinen käyttöliittymä.
Tiedoston nimi: LinkedListExample.java
imessage-pelit Androidilla
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){>