CodeGym /Java Blog /Willekeurig /Queue poll() Methode in Java met voorbeelden
John Squirrels
Niveau 41
San Francisco

Queue poll() Methode in Java met voorbeelden

Gepubliceerd in de groep Willekeurig

Wat is een wachtrij?

Zoals de naam al aangeeft, is wachtrij een algemene gegevensstructuur in Java volgens de invoegvolgorde First In First Out (FIFO) . Je kunt het je gemakkelijk voorstellen als een rij bij een supermarkt. Hoe eerder je binnenkomt, hoe eerder je weggaat. Het betekent dat het element dat eerder aan de wachtrij is toegevoegd, ook eerder zal vertrekken. Het eerste element (voorkant) van de wachtrij wordt ook wel head genoemd .Queue poll() Methode in Java met voorbeelden - 2
Fig 1.0: Een eenvoudige wachtrij in Java

Wat is de poll() methode van Queue?

Met de methode poll() kunt u het bovenste element (head) van een wachtrij ophalen en verwijderen. In ons voorbeeld, wanneer u poll() aanroept in de bovenstaande wachtrij, ontvangt u '1' als resultaat. En er zullen nog maar 4 elementen in de wachtrij staan.Queue poll() Methode in Java met voorbeelden - 3
Fig 1.1: Na gebruik van de poll() methode op een wachtrij

poll()-methode in Java

voorbeeld 1

Bekijk een eenvoudig voorbeeld van het aanroepen van de functie poll() in de wachtrij die wordt weergegeven in figuur 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");        
	}
}
Uitgang
Wachtrij: [1, 2, 3, 4, 5, 6] poll() geretourneerd: 1 wachtrij bijgewerkt! [2, 3, 4, 5, 6] poll() geretourneerd: 2 wachtrij bijgewerkt! [3, 4, 5, 6] poll() geretourneerd: 3 wachtrij bijgewerkt! [4, 5, 6]
Houd er rekening mee dat na elke poll() de aanroepgrootte van de wachtrij met 1 wordt verkleind en head wordt geretourneerd.

Voorbeeld 2

Laten we eens kijken naar een ander voorbeeld van dagen in een week. We zullen poll() één voor één op weekdagen aanroepen en kijken hoe het eruit ziet.

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");                   
	}
}
Uitgang
Weekdagen: [zondag, maandag, dinsdag, woensdag, donderdag, vrijdag, zaterdag] poll() geretourneerd: zondagdagen bijgewerkt! [maandag, dinsdag, woensdag, donderdag, vrijdag, zaterdag] poll() geretourneerd: maandag dagen bijgewerkt! [dinsdag, woensdag, donderdag, vrijdag, zaterdag] poll() geretourneerd: dinsdag dagen bijgewerkt! [woensdag, donderdag, vrijdag, zaterdag]

Hoe verschilt poll() van peek() en remove()?

Het is heel gemakkelijk voor beginners om de drie verschillende concepten door elkaar te halen, aangezien ze behoorlijk op elkaar lijken. Laten we "q" een wachtrij zijn, dan is dit hoe ze verschillen:
  • q.poll() : verwijdert en haalt de kop van de wachtrij terug
  • q.peek() : verwijdert niet, maar haalt alleen het hoofd van de wachtrij op/geeft het terug
  • q.remove() : verwijdert en herstelt de kop van de wachtrij
Het lijkt er dus op dat remove() en poll() precies hetzelfde zijn. Ze werken identiek in normale omstandigheden. Maar wanneer de wachtrij leeg is, genereert remove() NoSuchElementException , terwijl poll null retourneert .

Voorbeeld 3

Laten we nu eens kijken naar enkele voorbeelden van de bovenstaande drie functies.

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

	}
}
Uitgang
Weekdagen: [zondag, maandag, dinsdag, woensdag, donderdag, vrijdag, zaterdag] peek() geretourneerd: zondag Weekdagen: [zondag, maandag, dinsdag, woensdag, donderdag, vrijdag, zaterdag] peek() geretourneerd: zondag weekdagen : [zondag, maandag, dinsdag, woensdag, donderdag, vrijdag, zaterdag] remove() geretourneerd: Sunday Days Bijgewerkt! [maandag, dinsdag, woensdag, donderdag, vrijdag, zaterdag] remove() geretourneerd: maandag dagen bijgewerkt! [dinsdag, woensdag, donderdag, vrijdag, zaterdag] remove() geretourneerd: dinsdag remove() geretourneerd: woensdag remove() geretourneerd: donderdag remove() geretourneerd: vrijdag Dagen Bijgewerkt! [zaterdag] poll() geretourneerd: zaterdagdagen bijgewerkt! [] poll() geretourneerd: null Uitzondering in thread "main" java.util.NoSuchElementException op java.util.LinkedList.removeFirst(LinkedList.java:270) op java.util.LinkedList.remove(LinkedList.java:
Zoals je kunt zien na het aanroepen van peek() blijven weekdagen hetzelfde. En als we remove() of poll() gebruiken , wordt de grootte van de wachtrij met 1 verminderd, samen met het retourneren van de kop. Bovendien wordt java.util.NoSuchElementException gegenereerd wanneer we remove() aanroepen bij een lege wachtrij, terwijl een dergelijke uitzondering niet wordt gegenereerd voor het gebruik van poll() .

Conclusie

We hopen dat u tegen het einde bekend bent met het gebruik en de werking van de methode poll() van Queues. In geval van verwarring kunt u hier echter altijd terugkomen om te overleggen. Veel plezier met coderen!
Opmerkingen
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION