Jonolajapinta on osa java.util paketti ja laajentaa Keräysrajapinta . Se tallentaa ja käsittelee tietoja järjestyksessä, jossa elementit lisätään takaosaan ja poistetaan edestä.
Keskeiset ominaisuudet
- FIFO -tilaus: Elementit käsitellään siinä järjestyksessä, kun ne asetettiin (ensimmäinen ensimmäinen-out).
- Ei satunnaista pääsyä: Toisin kuin List -elementtejä ei voida käyttää suoraan hakemistolla.
- Useita variantteja: Sisältää PriorityQueue Deque ArrayDeque- ja LinkedList -toteutukset.
- Kaksi menetelmäjoukkoa: Heittoversiot (lisää poistoelementti) ja turvalliset versiot (tarjoa kyselyjen kurkistus).
Java -jonotietopinnan julistus
Jonolajapinta julistetaan seuraavasti:
Julkisen käyttöliittymän jono laajentaa kokoelmaa
Emme voi välittää jonoa suoraan, koska se on käyttöliittymä. Täällä voimme käyttää tätä käyttöliittymän toteuttavaa luokkaa LinkedList tai Priorityqueue.
Jonottaa
jono = uusi LinkedList (); valettu sql:ssä
Nyt käydään läpi yksinkertainen esimerkki, sitten sukellamme syvälle artikkeliin.
Esimerkki: Perusjono LinkedList: n avulla
Javaimport java.util.LinkedList; import java.util.Queue; public class Geeks { public static void main(String args[]) { // Create a Queue of Integers using LinkedList Queue<Integer> q = new LinkedList<>(); System.out.println('Queue elements: ' + q); } }
Tulos
Queue elements: []
Koska jono on rajapinta, tarvitsee betoniluokan ilmoitukselle ja yleisimmät luokat ovat Prulityquene ja Linkityslista Java. Huomaa, että kumpikaan näistä toteutuksista ei ole säie-turvallista. Prioriteettiblockingqueue on yksi vaihtoehtoinen toteutus, jos säie-turvallista toteutusta tarvitaan.
udp-protokolla
Jono -objektien luominen
Jono on käyttöliittymä, joten tyyppistä jonosta ei voida luoda objekteja. Tarvitsemme aina luokan, joka laajentaa tätä luetteloa objektin luomiseksi. Ja myös käyttöönoton jälkeen Geneerit Java 1.5: ssä on mahdollista rajoittaa jonoon tallennettava esinetyyppi. Tämän tyyppinen turvallinen jono voidaan määritellä seuraavasti:
Java// Obj is the type of the object to be stored in Queue Queue<Obj> queue = new PriorityQueue<Obj> ();
Yleiset menetelmät
Jonolajapinta tarjoaa useita menetelmiä jonon elementtien poistamiseksi ja tarkastamiseksi. Tässä on joitain yleisimmin käytetyistä menetelmistä:
- Lisää (elementti) : Lisää elementin jonon takaosaan. Jos jono on täynnä, se heittää poikkeuksen.
- tarjous (elementti): Lisää elementin jonon takaosaan. Jos jono on täynnä, se palauttaa väärän.
- poistaa() : Poistaa ja palauttaa elementin jonon etuosaan. Jos jono on tyhjä, se heittää poikkeuksen.
- kysely (): Poistaa ja palauttaa elementin jonon etuosaan. Jos jono on tyhjä, se palauttaa NULL: n.
- elementti (): Palauttaa jonon etuosan elementin poistamatta sitä. Jos jono on tyhjä, se heittää poikkeuksen.
- kurkistaa() : Palauttaa elementin jonon etuosaan poistamatta sitä. Jos jono on tyhjä, se palauttaa NULL: n.
Esimerkki 1: Tämä esimerkki osoittaa basic -jonooperaatiot.
Javaimport java.util.LinkedList; import java.util.Queue; public class Geeks { public static void main(String[] args) { Queue<String> queue = new LinkedList<>(); // add elements to the queue queue.add('apple'); queue.add('banana'); queue.add('cherry'); 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); } }
Tulos
Queue: [apple banana cherry] Removed element: apple Queue after removal: [banana cherry] Peeked element: banana Queue after peek: [banana cherry date]
Esimerkki 2 -
Javaimport java.util.LinkedList; import java.util.Queue; public class Geeks { public static void main(String[] args){ Queue<Integer> 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); } }
Tulos
Elements of queue: [0 1 2 3 4] Removed element:0 [1 2 3 4] Head of queue:1 Size of queue:4
Luokat, jotka toteuttavat jonorajapinnan
1. PriorityQuEue
PriorityQuEue -luokan avulla voimme prosessoida elementtejä niiden prioriteetin perusteella normaalin jonon tavanomaisen FIFO -järjestyksen sijasta. Se on hyödyllistä, kun elementtejä on käsiteltävä prioriteettijärjestyksessä. Näin voimme luoda jonon tällä luokalla.
Esimerkki:
mitkä kuukaudet ovat Q1Java
import java.util.*; class Geeks { public static void main(String args[]){ // Creating empty priority queue Queue<Integer> pq = new PriorityQueue<Integer>(); // Adding items to the pQueue using add() pq.add(10); pq.add(20); pq.add(15); // Printing the top element of the PriorityQueue System.out.println(pq.peek()); // Printing the top element and removing it the PriorityQueue container System.out.println(pq.poll()); // Printing the top element again System.out.println(pq.peek()); } }
Tulos
10 10 15
2. LinkedList
LinkedList on lineaarinen tietorakenne, jossa elementit tallennetaan erillisinä objekteina, jotka sisältävät datan ja linkin seuraavaan elementtiin. Elementit on kytketty osoittimilla, joita ei tallenneta jatkuvaan muistiin. Näin voimme luoda jonon tällä luokalla.
Esimerkki:
Javaimport java.util.*; class Geeks { public static void main(String args[]) { // Creating empty LinkedList Queue<Integer> ll = new LinkedList<Integer>(); // 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()); } }
Tulos
10 10 20
3. Priority Blockingqueue
PriorityBlockingqueue on säie-turvallinen rajaton estojono, joka tilaa elementtejä, kuten prioriteetti ja tukee hakua. Koska se on rajattomia lisääviä elementtejä, voi silti epäonnistua, jos muisti loppuu. Näin voit luoda jono tämän luokan avulla.
Esimerkki:
lankojen synkronointiJava
import java.util.concurrent.PriorityBlockingQueue; import java.util.*; class Geeks { public static void main(String args[]) { // Creating empty priority blocking queue Queue<Integer> pbq = new PriorityBlockingQueue<Integer>(); // 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()); } }
Tulos
10 10 15
Erilaiset toiminnot jonorajapinnalla priorityQuEue -luokan avulla
1. Elementtien lisääminen
Jos haluat lisätä elementin jonoon, voimme käyttää add () -menetelmä . Lisäysmääräystä ei säilytetä prioriteettina. Elementit tallennetaan prioriteettijärjestyksen perusteella, joka nousee oletuksena.
Esimerkki:
Javaimport java.util.*; public class Geeks { public static void main(String args[]) { Queue<String> pq = new PriorityQueue<>(); pq.add('Geeks'); pq.add('For'); pq.add('Geeks'); System.out.println(pq); } }
Tulos
[For Geeks Geeks]
2. elementtien poistaminen
Elementin poistamiseksi jonosta voimme käyttää Poista () -menetelmä. Jos esineitä on useita, esineen ensimmäinen esiintyminen poistetaan. Se kysely () menetelmä käytetään myös pään poistamiseen ja palauttamiseen.
Esimerkki:
merkkijono java korvataJava
import java.util.*; public class Geeks { public static void main(String args[]) { Queue<String> 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); } }
Tulos
Initial Queue: [For Geeks Geeks] After Remove: [For Geeks] Poll Method: For Final Queue: [Geeks]
3. jonon iterointi
Jonon läpi on useita tapoja iteroida. Tunnetuin tapa on jonon muuntaminen taulukkoon ja kulkeminen Silmukka . Jonossa on myös sisäänrakennettu iteraattori, jota voidaan käyttää iterointiin jonon läpi.
Esimerkki:
Javaimport java.util.*; public class Geeks { public static void main(String args[]) { Queue<String> pq = new PriorityQueue<>(); pq.add('Geeks'); pq.add('For'); pq.add('Geeks'); Iterator iterator = pq.iterator(); while (iterator.hasNext()) { System.out.print(iterator.next() + ' '); } } }
Tulos
For Geeks Geeks
Jonolajapinnan menetelmät
Tässä on jonon täydellinen menetelmäluettelo
Menetelmä | Kuvaus |
|---|---|
| boolean add (e) | Lisää elementti; heittää poikkeuksen, jos täynnä. |
| Boolen tarjous (E E) | Lisää elementti; Palauttaa väärän, jos täynnä. |
| E poista () | Poistaa pään; heittää poikkeuksen, jos tyhjä. |
| E -kysely () | Poistaa pään; Palauttaa NULL: n, jos tyhjä. |
| Ja elementti () | Hakee pään; heittää poikkeuksen, jos tyhjä. |
| E peek () | Hakee pään; Palauttaa NULL: n, jos tyhjä. |
| Boolean Addall (kokoelma extends E>c) | Lisää kaikki elementit toisesta kokoelmasta. |
| tyhjyys () | Poistaa kaikki elementit. |
| Boolean sisältää (objekti O) | Tarkistaa, onko elementti olemassa. |
| Boolean ContsAnsAll (kokoelma>c) | Tarkistaa, onko kaikkia elementtejä olemassa. |
| boolean vastaa (objekti o) | Verrataan toiseen kokoelmaan. |
| int hashcode () | Palauttaa hash -koodin. |
| boolean isEmpty () | Tarkistaa, onko kokoelma tyhjä. |
| Iteraattori | Palauttaa iteraattorin elementeille. |
| Boolean Poista (objekti O) | Poistaa tietyn elementin. |
| Boolen Removeal (kokoelma>c) | Poistaa kaikki vastaavat elementit. |
| boolean säilyttäminen (kokoelma>c) | Pitää vain määriteltyjä elementtejä. |
| Int -koko () | Palauttaa elementtien määrän. |
| Esine [] toarray () | Palauttaa elementit taulukona. |
| Palauttaa elementit kirjoitettuna taulukona. | |
| Oletusarvo tyhjä foreach (kuluttaja super E>toiminta) | Suorittaa toiminnan jokaiselle elementille. |
| Oletusarvo tyhjä foreach (kuluttaja super E>toiminta) | Suorittaa toiminnan jokaiselle elementille. |
| laiminlyönti | Palauttaa halkaisimen. |
| oletusvirta | Palauttaa peräkkäisen virran. |
| oletusvirta | Palauttaa rinnakkaisen virran. |