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 .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.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
Ö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 .
GO TO FULL VERSION