CodeGym /Java-Blog /Random-DE /Queue poll()-Methode in Java mit Beispielen
Autor
Artem Divertitto
Senior Android Developer at United Tech

Queue poll()-Methode in Java mit Beispielen

Veröffentlicht in der Gruppe Random-DE

Was ist eine Warteschlange?

Wie der Name schon sagt, ist Queue eine in Java übliche Datenstruktur, die der FIFO-Einfügereihenfolge (First In First Out) folgt . Man kann es sich leicht wie eine Warteschlange in einem Lebensmittelgeschäft vorstellen. Je früher Sie eintreten, desto eher gehen Sie. Dies bedeutet, dass das zuvor zur Warteschlange hinzugefügte Element auch früher verlassen wird. Das erste Element (vorne) der Warteschlange wird auch head genannt .Queue poll()-Methode in Java mit Beispielen - 2
Abb. 1.0: Eine einfache Warteschlange in Java

Was ist die poll()-Methode von Queue?

Mit der Methode poll() können Sie das oberste Element (Kopf) einer Warteschlange abrufen und entfernen. Wenn Sie in unserem Beispiel poll() in der obigen Warteschlange aufrufen, erhalten Sie als Ergebnis „1“. Und es bleiben nur noch 4 Elemente in der Warteschlange.Queue poll()-Methode in Java mit Beispielen - 3
Abb. 1.1: Nach Verwendung der poll()-Methode in einer Warteschlange

poll()-Methode in Java

Beispiel 1

Schauen Sie sich ein einfaches Beispiel für den Aufruf der poll() -Funktion in der in Abbildung 1.0 gezeigten Warteschlange an.

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");        
	}
}
Ausgang
Warteschlange: [1, 2, 3, 4, 5, 6] poll() zurückgegeben: 1 Warteschlange aktualisiert! [2, 3, 4, 5, 6] poll() zurückgegeben: 2 Warteschlange aktualisiert! [3, 4, 5, 6] poll() zurückgegeben: 3 Warteschlange aktualisiert! [4, 5, 6]
Bitte beachten Sie, dass nach jedem poll() -Aufruf die Größe der Warteschlange um 1 reduziert wird und der Kopf zurückgegeben wird.

Beispiel 2

Schauen wir uns ein weiteres Beispiel für Tage in einer Woche an. Wir rufen poll() nacheinander an Wochentagen auf und sehen, wie es aussieht.

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");                   
	}
}
Ausgang
Wochentage: [Sonntag, Montag, Dienstag, Mittwoch, Donnerstag, Freitag, Samstag] poll() zurückgegeben: Sonntagstage aktualisiert! [Montag, Dienstag, Mittwoch, Donnerstag, Freitag, Samstag] poll() zurückgegeben: Montagstage aktualisiert! [Dienstag, Mittwoch, Donnerstag, Freitag, Samstag] poll() zurückgegeben: Dienstagstage aktualisiert! [Mittwoch, Donnerstag, Freitag, Samstag]

Wie unterscheidet sich poll() von peek() und remove()?

Für Anfänger ist es sehr einfach, die drei verschiedenen Konzepte zu verwechseln, da sie ziemlich ähnlich aussehen. Lassen Sie uns „q“ eine Warteschlange sein, dann sind sie wie folgt unterschiedlich:
  • q.poll() : Entfernt den Kopf der Warteschlange und ruft ihn ab
  • q.peek() : Entfernt nicht, sondern ruft nur den Kopf der Warteschlange ab bzw. gibt ihn zurück
  • q.remove() : Entfernt den Kopf der Warteschlange und ruft ihn ab
Es scheint also, dass „remove()“ und „poll()“ genau das Gleiche sind. Unter normalen Umständen funktionieren sie identisch. Wenn die Warteschlange jedoch leer ist, löst „remove()“ eine NoSuchElementException aus , während poll „ null“ zurückgibt .

Beispiel 3

Werfen wir nun einen kurzen Blick auf einige Beispiele der oben genannten drei Funktionen.

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

	}
}
Ausgang
Wochentage: [Sonntag, Montag, Dienstag, Mittwoch, Donnerstag, Freitag, Samstag] peek() zurückgegeben: Sonntag Wochentage: [Sonntag, Montag, Dienstag, Mittwoch, Donnerstag, Freitag, Samstag] peek() zurückgegeben: Sonntag Wochentage : [Sonntag, Montag, Dienstag, Mittwoch, Donnerstag, Freitag, Samstag] remove() zurückgegeben: Sonntagstage aktualisiert! [Montag, Dienstag, Mittwoch, Donnerstag, Freitag, Samstag] Remove() zurückgegeben: Montag Tage aktualisiert! [Dienstag, Mittwoch, Donnerstag, Freitag, Samstag] Remove() zurückgegeben: Dienstag Remove() zurückgegeben: Mittwoch Remove() zurückgegeben: Donnerstag Remove() zurückgegeben: Freitag Tage aktualisiert! [Samstag] poll() zurückgegeben: Samstagstage aktualisiert! [] poll() zurückgegeben: null Ausnahme im Thread „main“ java.util.NoSuchElementException bei java.util.LinkedList.removeFirst(LinkedList.java:270) bei java.util.LinkedList.remove(LinkedList.java:685) bei QueuePollMethod.main(QueuePollMethod.java:48)
Wie Sie nach dem Aufruf von peek() sehen können, bleiben die Wochentage gleich. Und wenn wir „remove()“ oder „poll()“ verwenden, wird die Größe der Warteschlange um 1 reduziert und gleichzeitig der Kopf zurückgegeben. Darüber hinaus wird java.util.NoSuchElementException ausgelöst, wenn wir „remove()“ in einer leeren Warteschlange aufrufen, während bei der Verwendung von poll() keine solche Ausnahme ausgelöst wird .

Abschluss

Wir hoffen, dass Sie am Ende mit der Verwendung und Funktionsweise der poll()- Methode von Warteschlangen vertraut sind. Im Falle von Unklarheiten können Sie jedoch jederzeit hierher zurückkommen und sich beraten lassen. Viel Spaß beim Codieren!
Kommentare
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION