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