logo

Jonolajapinta Javassa

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.

Jonottaajono = uusi LinkedList();

valettu sql:ssä

Nyt käydään läpi yksinkertainen esimerkki, sitten sukellamme syvälle artikkeliin.

Esimerkki: Perusjono LinkedList: n avulla

Java
import 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.

Java
import 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 -

Java
import 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 Q1
Java
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:

Java
import 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 synkronointi
Java
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:

Java
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(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 korvata
Java
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:

Java
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');  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äluetteloJava -käyttöliittymä ja kaikki sen perimän menetelmät kokoelmastaJa iterable.

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 (kokoelmac)Lisää kaikki elementit toisesta kokoelmasta.
tyhjyys ()Poistaa kaikki elementit.
Boolean sisältää (objekti O)Tarkistaa, onko elementti olemassa.
Boolean ContsAnsAll (kokoelmac)Tarkistaa, onko kaikkia elementtejä olemassa.
boolean vastaa (objekti o)Verrataan toiseen kokoelmaan.
int hashcode ()Palauttaa hash -koodin.
boolean isEmpty ()Tarkistaa, onko kokoelma tyhjä.
Iteraattoriiterator ()Palauttaa iteraattorin elementeille.
Boolean Poista (objekti O)Poistaa tietyn elementin.
Boolen Removeal (kokoelmac)Poistaa kaikki vastaavat elementit.
boolean säilyttäminen (kokoelmac)Pitää vain määriteltyjä elementtejä.
Int -koko ()Palauttaa elementtien määrän.
Esine [] toarray ()Palauttaa elementit taulukona.
T [] toarray (t [] a)Palauttaa elementit kirjoitettuna taulukona.
Oletusarvo tyhjä foreach (kuluttajatoiminta)Suorittaa toiminnan jokaiselle elementille.
Oletusarvo tyhjä foreach (kuluttajatoiminta)Suorittaa toiminnan jokaiselle elementille.
laiminlyöntihalkaisija ()Palauttaa halkaisimen.
oletusvirtastream ()Palauttaa peräkkäisen virran.
oletusvirtarinnakkain ()Palauttaa rinnakkaisen virran.