CodeGym /Java-blogg /Tilfeldig /Queue poll() Metode i Java med eksempler
John Squirrels
Nivå
San Francisco

Queue poll() Metode i Java med eksempler

Publisert i gruppen

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 .Queue poll() Metode i Java med eksempler - 2
Fig 1.0: En enkel kø i Java

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.Queue poll() Metode i Java med eksempler - 3
Fig 1.1: Etter bruk av poll()-metoden i en kø

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
Så det ser ut til at remove() og poll() er nøyaktig det samme. De fungerer identisk under normale omstendigheter. Men når køen er tom, kaster remove() NoSuchElementException , mens poll returnerer null .

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() .

Konklusjon

Til slutt håper vi du er kjent med bruken og arbeidet med poll()- metoden til Queues. Men i tilfelle forvirring kan du alltid komme tilbake hit for å konsultere. Lykke til med koding!
Kommentarer
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION