CodeGym /Java blog /Véletlen /Queue poll() módszer Java nyelven példákkal
John Squirrels
Szint
San Francisco

Queue poll() módszer Java nyelven példákkal

Megjelent a csoportban

Mi az a várólista?

Ahogy a név is sugallja, a Queue egy gyakori adatstruktúra a Java-ban, amely a FIFO (First In First Out) beillesztési sorrendet követi . Könnyen elképzelheti úgy, mint egy sorban állást egy élelmiszerboltban. Minél hamarabb belépsz, annál hamarabb távozol. Ez azt jelenti, hogy a várólistához korábban hozzáadott elem is korábban távozik. A sor első elemét (front) fejnek is nevezik .Queue poll() módszer Java nyelven példákkal - 2
1.0 ábra: Egy egyszerű várólista Java nyelven

Mi a Queue poll() metódusa?

A poll() metódus lehetővé teszi a sor legfelső elemének (fejének) lekérését és eltávolítását. Példánkban, amikor a fenti sorban meghívja a poll() függvényt, '1'-et fog kapni. És már csak 4 elem marad a sorban.Queue poll() módszer Java nyelven példákkal - 3
1.1. ábra: A poll() metódus használata után egy sorban

poll() metódus Java-ban

1. példa

Vessen egy pillantást egy egyszerű példára a poll() függvény meghívására az 1.0. ábrán látható sorban.

import java.util.LinkedList;
import java.util.Queue;

public class QueuePollMethod {

	public static void main(String[] args) {

	  // create a queue of die rolls 
        Queue dieRoll   = new LinkedList(); 
  
        // Add 6 integers one by one
        dieRoll.add(1); 
        dieRoll.add(2); 
        dieRoll.add(3); 
        dieRoll.add(4); 
        dieRoll.add(5); 
        dieRoll.add(6); 
  
        // print the original queue 
        System.out.println("Queue:\t" + dieRoll + "\n"); 
  
        // after calling poll()
        System.out.println("poll() returned : " + dieRoll.poll()); 
        System.out.println("Queue Updated!\t" + dieRoll + "\n"); 

        // after calling poll()
        System.out.println("poll() returned : " + dieRoll.poll()); 
        System.out.println("Queue Updated!\t" + dieRoll + "\n"); 
        
        // after calling poll()
        System.out.println("poll() returned : " + dieRoll.poll()); 
        System.out.println("Queue Updated!\t" + dieRoll + "\n");        
	}
}
Kimenet
Sor: [1, 2, 3, 4, 5, 6] poll() visszatért: 1 Sor frissítve! [2, 3, 4, 5, 6] poll() visszaadott: 2 Sor frissítve! [3, 4, 5, 6] poll() visszaadott: 3 Sor frissítve! [4, 5, 6]
Kérjük, vegye figyelembe, hogy minden poll() hívás után hogyan csökken a sor mérete 1-gyel, és hogyan tér vissza head.

2. példa

Nézzünk egy másik példát a hét napjaira. Hétköznap egyesével meghívjuk a poll()- t, és meglátjuk, hogy néz ki.

import java.util.LinkedList;
import java.util.Queue;

public class QueuePollMethod {

	public static void main(String[] args) {
        
        Queue days   = new LinkedList(); 
        
        days.add("Sunday");
        days.add("Monday");
        days.add("Tuesday");
        days.add("Wednesday");
        days.add("Thursday");
        days.add("Friday");
        days.add("Saturday");

        // print all the days in the week
        System.out.println("Week Days: \t" + days + "\n"); 
  
        // after calling poll()
        System.out.println("poll() returned: " + days.poll()); 
        System.out.println("Days Updated!\t" + days + "\n"); 

        // after calling poll()
        System.out.println("poll() returned: " + days.poll()); 
        System.out.println("Days Updated!\t" + days + "\n"); 
        
        // after calling poll()
        System.out.println("poll() returned: " + days.poll()); 
        System.out.println("Days Updated!\t" + days + "\n");                   
	}
}
Kimenet
Hét napjai: [vasárnap, hétfő, kedd, szerda, csütörtök, péntek, szombat] szavazás() visszatért: Vasárnapi napok Frissítve! [Hétfő, Kedd, Szerda, Csütörtök, Péntek, Szombat] szavazás() visszatért: Hétfő Napok Frissítve! [kedd, szerda, csütörtök, péntek, szombat] szavazás() visszatért: Kedd Napok Frissítve! [szerda, csütörtök, péntek, szombat]

Miben különbözik a poll() a peek()-től és a remove()-tól?

A kezdők nagyon könnyen összekeverhetik a három különböző fogalmat, mivel nagyon hasonlóak. Legyen „q” egy sor, akkor ezek a következők:
  • q.poll() : eltávolítja és visszakeresi a sor fejét
  • q.peek() : nem távolítja el, csak lekéri/visszaadja a sor fejét
  • q.remove() : eltávolítja és visszakeresi a sor fejét
Tehát úgy tűnik, hogy a remove() és poll() pontosan ugyanaz. Normál körülmények között ugyanúgy működnek. De ha a sor üres, a remove() a NoSuchElementException parancsot dobja , míg a poll null értéket ad vissza .

3. példa

Most pedig nézzünk meg néhány példát a fenti három függvényre.

import java.util.LinkedList;
import java.util.Queue;

public class QueuePollMethod {

	public static void main(String[] args) {
        
        Queue days   = new LinkedList(); 
        
        days.add("Sunday");
        days.add("Monday");
        days.add("Tuesday");
        days.add("Wednesday");
        days.add("Thursday");
        days.add("Friday");
        days.add("Saturday");

        // print all the days in the week
        System.out.println("Week Days: \t" + days + "\n"); 
  
        // after calling peek()
        System.out.println("peek() returned: " + days.peek()); 
        System.out.println("Week Days: \t" + days + "\n"); 

        System.out.println("peek() returned: " + days.peek()); 
        System.out.println("Week Days: \t" + days + "\n"); 
        
        // after calling remove()
        System.out.println("remove() returned: " + days.remove()); 
        System.out.println("Days Updated!\t" + days + "\n"); 
        
        System.out.println("remove() returned: " + days.remove()); 
        System.out.println("Days Updated!\t" + days + "\n"); 
       
        System.out.println("remove() returned: " + days.remove()); 
        System.out.println("remove() returned: " + days.remove()); 
        System.out.println("remove() returned: " + days.remove()); 
        System.out.println("remove() returned: " + days.remove()); 

        System.out.println("Days Updated!\t" + days + "\n"); 
 
        // after calling poll()
        System.out.println("poll() returned: " + days.poll()); 
        System.out.println("Days Updated!\t" + days + "\n");           
        
        System.out.println("poll() returned: " + days.poll()); 
        System.out.println("remove() returned: " + days.remove()); 

	}
}
Kimenet
Hét napjai: [vasárnap, hétfő, kedd, szerda, csütörtök, péntek, szombat] peek() visszatért: vasárnap Hét napjai: [vasárnap, hétfő, kedd, szerda, csütörtök, péntek, szombat] peek() visszatért: vasárnap hét napjai : [vasárnap, hétfő, kedd, szerda, csütörtök, péntek, szombat] remove() return: Sunday Days Frissítve! [Hétfő, Kedd, Szerda, Csütörtök, Péntek, Szombat] remove() return: Monday Days Frissítve! [Kedd, Szerda, Csütörtök, Péntek, Szombat] remove() return: Tuesday remove() return: Wednesday remove() return: Thursday remove() return: Friday Days Frissítve! [Szombat] szavazás() visszatért: Szombati napok Frissítve! [] poll() visszatért: null Kivétel a "main" szálban java.util.NoSuchElementException itt: java.util.LinkedList.removeFirst(LinkedList.java:270) itt: java.util.LinkedList.remove(LinkedList.java:
Mint látható a peek() hívása után , a hétköznapok változatlanok maradnak. És ahogy a remove() vagy poll() függvényt használjuk, a sor mérete 1-gyel csökken a fejjel visszaadásával együtt. Ezenkívül a java.util.NoSuchElementException kidobásra kerül, amikor a remove() függvényt egy üres sorban hívjuk , míg a poll() használata esetén nem adunk kivételt .

Következtetés

Reméljük, hogy a végére már ismeri a Queues poll() metódusának használatát és működését. Bármilyen félreértés esetén azonban bármikor visszajöhet ide tanácsot kérni. Boldog kódolást!
Hozzászólások
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION