CodeGym /Java Blogu /Rastgele /Örneklerle Java'da Queue poll() Yöntemi
John Squirrels
Seviye
San Francisco

Örneklerle Java'da Queue poll() Yöntemi

grupta yayınlandı

Kuyruk nedir?

Adından da anlaşılacağı gibi Kuyruk, Java'da İlk Giren İlk Çıkar (FIFO) ekleme sırasını izleyen yaygın bir veri yapısıdır . Bunu bir bakkal kuyruğu olarak kolayca hayal edebilirsiniz. Ne kadar erken girersen, o kadar erken çıkarsın. Bu, kuyruğa daha önce eklenen öğenin de daha erken ayrılacağı anlamına gelir. Kuyruğun ilk elemanı (ön) aynı zamanda head olarak da adlandırılır .Java'da Queue poll() Yöntemi ve Örnekler - 2
Şekil 1.0: Java'da basit bir Kuyruk

Queue'nun poll() yöntemi nedir?

poll() yöntemi, bir Kuyruğun en üstteki öğesini (başını) almanıza ve kaldırmanıza olanak tanır. Örneğimizde, yukarıdaki kuyrukta poll()'u çağırdığınızda, sonuç olarak '1' alacaksınız. Ve kuyrukta kalan sadece 4 element olacak.Örneklerle Java'da Queue poll() Yöntemi - 3
Şekil 1.1: Bir kuyrukta poll() yöntemini kullandıktan sonra

Java'da anket () yöntemi

örnek 1

Şekil 1.0'da gösterilen kuyrukta poll() işlevini çağırmanın basit bir örneğine bakın .

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");        
	}
}
Çıktı
Sıra: [1, 2, 3, 4, 5, 6] anket() döndürüldü: 1 Sıra Güncellendi! [2, 3, 4, 5, 6] anket() döndürüldü: 2 Kuyruk Güncellendi! [3, 4, 5, 6] anket() döndürüldü : 3 Kuyruk Güncellendi! [4, 5, 6]
Lütfen, kuyruğun her poll() çağrı boyutunun nasıl 1 azaltıldığını ve başın döndürüldüğünü unutmayın.

Örnek 2

Bir haftadaki günlerin başka bir örneğine bakalım. Hafta içi her gün poll()'u tek tek arayacağız ve nasıl göründüğüne bakacağız.

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");                   
	}
}
Çıktı
Haftanın Günleri: [Pazar, Pazartesi, Salı, Çarşamba, Perşembe, Cuma, Cumartesi] anket() döndürüldü: Pazar Günleri Güncellendi! [Pazartesi, Salı, Çarşamba, Perşembe, Cuma, Cumartesi] anket() döndürüldü: Pazartesi Günleri Güncellendi! [Salı, Çarşamba, Perşembe, Cuma, Cumartesi] anket() döndürüldü: Salı Günleri Güncellendi! [Çarşamba, Perşembe, Cuma, Cumartesi]

poll()'ün peek() ve remove()'tan farkı nedir?

Oldukça benzer göründükleri için yeni başlayanlar için üç farklı konsepti karıştırmak çok kolaydır. “q” bir sıra olsun, o zaman şu şekilde farklılar:
  • q.poll() : sıranın başını kaldırır ve alır
  • q.peek() : kaldırmaz, sadece kuyruğun başını alır/döndürür
  • q.remove() : sıranın başını kaldırır ve alır
Öyle görünüyor ki remove() ve poll() tamamen aynı. Normal koşullarda aynı şekilde çalışırlar. Ancak sıra boş olduğunda, remove() NoSuchElementException fırlatır , poll ise null döndürür .

Örnek 3

Şimdi yukarıdaki üç işlevin birkaç örneğine hızlıca göz atalım.

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

	}
}
Çıktı
Hafta Günleri: [Pazar, Pazartesi, Salı, Çarşamba, Perşembe, Cuma, Cumartesi] peek() döndü: Pazar Hafta Günleri: [Pazar, Pazartesi, Salı, Çarşamba, Perşembe, Cuma, Cumartesi] peek() döndü: Pazar Hafta Günleri : [Pazar, Pazartesi, Salı, Çarşamba, Perşembe, Cuma, Cumartesi] kaldır() döndürüldü: Pazar Günleri Güncellendi! [Pazartesi, Salı, Çarşamba, Perşembe, Cuma, Cumartesi] kaldır() döndürüldü: Pazartesi Günleri Güncellendi! [Salı, Çarşamba, Perşembe, Cuma, Cumartesi] remove() döndü: Salı remove() döndü: Çarşamba remove() döndü: Perşembe remove() döndü: Cuma Günleri Güncellendi! [Cumartesi] anket() döndürüldü: Cumartesi Günleri Güncellendi! [] poll() döndürüldü: Java.util.LinkedList.removeFirst(LinkedList.java:270) adresinde java.util.LinkedList.remove(LinkedList.java:
Gördüğünüz gibi peek() çağrıldıktan sonra hafta içi günler aynı kalıyor. Ve remove() veya poll() kullandığımızda, başı döndürmekle birlikte kuyruğun boyutu 1 azalır. Ayrıca boş bir kuyrukta remove() çağrıldığında java.util.NoSuchElementException atılırken poll() kullanımı için böyle bir istisna atılmaz .

Çözüm

Son olarak, Kuyrukların poll() yönteminin kullanımına ve çalışmasına aşina olduğunuzu umuyoruz . Ancak herhangi bir karışıklık durumunda danışmak için her zaman buraya geri dönebilirsiniz. Mutlu Kodlama!
Yorumlar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION