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 .
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.
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
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 .
GO TO FULL VERSION