CodeGym /Java blogg /Slumpmässig /Queue poll() Metod i Java med exempel
John Squirrels
Nivå
San Francisco

Queue poll() Metod i Java med exempel

Publicerad i gruppen

Vad är en kö?

Precis som namnet antyder är Queue en vanlig datastruktur i Java efter insättningsordningen First In First Out (FIFO) . Du kan lätt föreställa dig det som en kö till en mataffär. Ju förr du går in, desto tidigare går du. Det betyder att elementet som lagts till i kön tidigare kommer att lämna tidigare också. Det första elementet (främre) i kön kallas även head .Queue poll() Metod i Java med exempel - 2
Fig 1.0: En enkel kö i Java

Vad är poll()-metoden för Queue?

Metoden poll() låter dig hämta och ta bort det översta elementet (huvudet) i en kö. I vårt exempel, när du anropar poll() i ovanstående kö får du '1' som ett resultat. Och det kommer bara att finnas 4 element kvar i kön.Queue poll() Metod i Java med exempel - 3
Fig 1.1: Efter att ha använt metoden poll() i en kö

poll()-metoden i Java

Exempel 1

Ta en titt på ett enkelt exempel på anrop av poll() -funktionen i kön som visas 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() returnerade: 1 kö uppdaterad! [2, 3, 4, 5, 6] poll() returnerade: 2 Kö uppdaterad! [3, 4, 5, 6] poll() returnerade: 3 Kö uppdaterad! [4, 5, 6]
Observera hur storleken på köns anrop efter varje poll() minskas med 1 och head returneras.

Exempel 2

Låt oss titta på ett annat exempel på dagar i veckan. Vi kommer att ringa poll() en efter en på vardagar och se hur det 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");                   
	}
}
Produktion
Veckodagar: [söndag, måndag, tisdag, onsdag, torsdag, fredag, lördag] poll() returnerade: söndagsdagar uppdaterade! [måndag, tisdag, onsdag, torsdag, fredag, lördag] poll() returnerade: Måndag Dagar Uppdaterad! [tisdag, onsdag, torsdag, fredag, lördag] poll() returnerade: tisdag dagar uppdaterad! [onsdag, torsdag, fredag, lördag]

Hur skiljer sig poll() från peek() och remove()?

Det är väldigt lätt för nybörjare att blanda ihop de tre olika koncepten eftersom de ser ganska lika ut. Låt oss "q" vara en kö, så här är de olika:
  • q.poll() : tar bort och hämtar köns huvud
  • q.peek() : tar inte bort utan bara hämtar/returnerar huvudet i kön
  • q.remove() : tar bort och hämtar köns huvud
Så det verkar som remove() och poll() är exakt samma. De fungerar identiskt under normala omständigheter. Men när kön är tom kastar remove() NoSuchElementException , medan poll returnerar null .

Exempel 3

Låt oss nu ta en snabb titt på några exempel på ovanstå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
Veckodagar: [söndag, måndag, tisdag, onsdag, torsdag, fredag, lördag] peek() returneras: söndag veckodagar: [söndag, måndag, tisdag, onsdag, torsdag, fredag, lördag] peek() returnerad: söndag veckodagar : [söndag, måndag, tisdag, onsdag, torsdag, fredag, lördag] remove() returnerade: Söndag Dagar Uppdaterad! [måndag, tisdag, onsdag, torsdag, fredag, lördag] remove() returnerade: Måndag Dagar Uppdaterad! [tisdag, onsdag, torsdag, fredag, lördag] remove() returnerad: tisdag remove() returnerad: onsdag remove() returnerad: torsdag remove() returnerad: fredag ​​dagar Uppdaterad! [Lördag] poll() returnerade: Lördagar uppdaterade! [] poll() returnerade: null Undantag 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 att ha ringt peek() förblir vardagarna desamma. Och när vi använder remove() eller poll() minskas storleken på kön med 1 samtidigt som huvudet returneras. Dessutom kastas java.util.NoSuchElementException när vi anropar remove() i en tom kö, medan inget sådant undantag kastas för användning av poll() .

Slutsats

Till slut hoppas vi att du är bekant med användningen och funktionen av poll()- metoden för Queues. Men i händelse av förvirring kan du alltid komma tillbaka hit för att rådgöra. Glad kodning!
Kommentarer
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION