CodeGym /Java blog /Tilfældig /Queue poll() Metode i Java med eksempler
John Squirrels
Niveau
San Francisco

Queue poll() Metode i Java med eksempler

Udgivet i gruppen

Hvad er en kø?

Ligesom navnet antyder, er Queue en almindelig datastruktur i Java efter indsættelsesrækkefølgen First In First Out (FIFO) . Du kan sagtens forestille dig det som en kø ved en købmand. Jo før du kommer ind, jo hurtigere går du. Det betyder, at det element, der er tilføjet køen tidligere, også forlader tidligere. Det første element (forsiden) i køen kaldes også head .Queue poll() Metode i Java med eksempler - 2
Fig 1.0: En simpel kø i Java

Hvad er poll()-metoden for Queue?

Metoden poll() giver dig mulighed for at hente og fjerne det øverste element (hoved) i en kø. I vores eksempel, når du kalder poll() i ovenstående kø, vil du modtage '1' som et resultat. Og der vil kun være 4 elementer tilbage i køen.Queue poll() Metode i Java med eksempler - 3
Fig. 1.1: Efter brug af poll()-metoden i en kø

poll() metode i Java

Eksempel 1

Se et simpelt eksempel på at kalde poll() -funktionen 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");        
	}
}
Produktion
Kø: [1, 2, 3, 4, 5, 6] poll() returneret: 1 kø opdateret! [2, 3, 4, 5, 6] poll() returnerede: 2 Kø opdateret! [3, 4, 5, 6] poll() returneret: 3 Kø opdateret! [4, 5, 6]
Bemærk venligst, hvordan efter hver poll() -opkald størrelsen af ​​køen reduceres med 1 og head returneres.

Eksempel 2

Lad os se på endnu et eksempel på dage i en uge. Vi ringer til poll() en efter en på hverdage og ser, hvordan det ser ud.

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");                   
	}
}
Produktion
Ugedage: [søndag, mandag, tirsdag, onsdag, torsdag, fredag, lørdag] afstemning() returneret: Søndagsdage opdateret! [mandag, tirsdag, onsdag, torsdag, fredag, lørdag] poll() returneret: mandag dage opdateret! [tirsdag, onsdag, torsdag, fredag, lørdag] meningsmåling() returneret: tirsdag dage opdateret! [onsdag, torsdag, fredag, lørdag]

Hvordan er poll() forskellig fra peek() og remove()?

Det er meget nemt for begyndere at blande de tre forskellige koncepter, da de ser ret ens ud. Lad os "q" være en kø, så er de forskellige her:
  • q.poll() : fjerner og henter hovedet i køen
  • q.peek() : fjerner ikke, men henter/returnerer kun hovedet i køen
  • q.remove() : fjerner og henter hovedet i køen
Så det ser ud til, at remove() og poll() er nøjagtig det samme. De fungerer identisk under normale omstændigheder. Men når køen er tom, kaster remove() NoSuchElementException , mens poll returnerer null .

Eksempel 3

Lad os nu tage et hurtigt kig på et par eksempler på ovenstående tre funktioner.

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

	}
}
Produktion
Ugedage: [søndag, mandag, tirsdag, onsdag, torsdag, fredag, lørdag] peek() returneret: søndag ugedage: [søndag, mandag, tirsdag, onsdag, torsdag, fredag, lørdag] peek() returneret: søndag ugedage : [søndag, mandag, tirsdag, onsdag, torsdag, fredag, lørdag] remove() returneret: Søndag Dage Opdateret! [mandag, tirsdag, onsdag, torsdag, fredag, lørdag] remove() returneret: mandag dage opdateret! [tirsdag, onsdag, torsdag, fredag, lørdag] remove() returneret: tirsdag remove() returneret: onsdag remove() returneret: torsdag remove() returneret: fredag ​​dage Opdateret! [Lørdag] afstemning() returnerede: Lørdagsdage opdateret! [] poll() returnerede: null Undtagelse 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 efter opkaldet peek() forbliver hverdage de samme. Og da vi bruger remove() eller poll() reduceres køens størrelse med 1 samtidig med, at hovedet returneres. Desuden kastes java.util.NoSuchElementException , når vi kalder remove() i en tom kø, mens der ikke kastes en sådan undtagelse for brug af poll() .

Konklusion

Til sidst håber vi, at du er bekendt med brugen og virkemåden af ​​poll()- metoden for Queues. Men i tilfælde af forvirring kan du altid komme tilbage her for at konsultere. God kodning!
Kommentarer
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION