Hva er en kø?
Akkurat som navnet tilsier, er Queue en vanlig datastruktur i Java etter innsettingsrekkefølgen First In First Out (FIFO) . Du kan lett tenke deg det som en kø i en matbutikk. Jo før du går inn, jo raskere går du. Det betyr at elementet som er lagt til i køen tidligere, også vil forlate tidligere. Det første elementet (foran) i køen kalles også head .Hva er poll()-metoden til Queue?
Poll()-metoden lar deg hente og fjerne det øverste elementet (hodet) i en kø. I vårt eksempel, når du ringer poll() i køen ovenfor, vil du motta '1' som et resultat. Og det vil bare være 4 elementer igjen i køen.poll()-metoden i Java
Eksempel 1
Ta en titt på et enkelt eksempel på å kalle poll() -funksjonen i køen vist i figur 1.0.
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");
}
}
Produksjon
Kø: [1, 2, 3, 4, 5, 6] poll() returnert: 1 kø oppdatert! [2, 3, 4, 5, 6] poll() returnerte: 2 Kø oppdatert! [3, 4, 5, 6] poll() returnerte: 3 Kø oppdatert! [4, 5, 6]
Vær oppmerksom på hvordan etter hver poll() kalles størrelsen på køen reduseres med 1 og head returneres.
Eksempel 2
La oss se på et annet eksempel på dager i en uke. Vi ringer poll() en etter en på hverdager og ser hvordan den ser ut.
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");
}
}
Produksjon
Ukedager: [søndag, mandag, tirsdag, onsdag, torsdag, fredag, lørdag] poll() returnert: søndagsdager oppdatert! [mandag, tirsdag, onsdag, torsdag, fredag, lørdag] poll() returnerte: mandag dager oppdatert! [tirsdag, onsdag, torsdag, fredag, lørdag] poll() returnerte: tirsdag Dager oppdatert! [onsdag, torsdag, fredag, lørdag]
Hvordan er poll() forskjellig fra peek() og remove()?
Det er veldig enkelt for nybegynnere å blande de tre forskjellige konseptene siden de ser ganske like ut. La oss "q" være en kø, så her er hvordan de er forskjellige:- q.poll() : fjerner og henter lederen av køen
- q.peek() : fjerner ikke, men henter/returnerer bare toppen av køen
- q.remove() : fjerner og henter lederen av køen
Eksempel 3
La oss nå ta en rask titt på noen få eksempler på de tre ovennevnte funksjonene.
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());
}
}
Produksjon
Ukedager: [søndag, mandag, tirsdag, onsdag, torsdag, fredag, lørdag] peek() returnert: søndag ukedager: [søndag, mandag, tirsdag, onsdag, torsdag, fredag, lørdag] peek() returnert: søndag ukedager : [søndag, mandag, tirsdag, onsdag, torsdag, fredag, lørdag] remove() returnert: Søndager Oppdatert! [mandag, tirsdag, onsdag, torsdag, fredag, lørdag] remove() returnert: mandag dager oppdatert! [tirsdag, onsdag, torsdag, fredag, lørdag] remove() returnert: tirsdag remove() returnert: onsdag remove() returnert: torsdag remove() returnert: fredag dager Oppdatert! [Lørdag] poll() returnerte: Lørdagsdager oppdatert! [] poll() returnerte: null Unntak i tråden "main" java.util.NoSuchElementException på java.util.LinkedList.removeFirst(LinkedList.java:270) på java.util.LinkedList.remove(LinkedList.java:
Som du kan se etter å ha ringt peek() forblir ukedagene de samme. Og når vi bruker remove() eller poll() reduseres størrelsen på køen med 1 samtidig som hodet returneres. Dessuten blir java.util.NoSuchElementException kastet når vi kaller remove() i en tom kø, mens ingen slike unntak blir kastet for bruk av poll() .
GO TO FULL VERSION