CodeBlanks Logo Icon CodeBlanks

Queue ve Deque

Queue<E> ve Deque<E> ile kuyruk öğrenirsin.

Queue<E> arayüzü

Queue<E> ilk giren ilk çıkar (FIFO) sırasıdır. ArrayDeque en hızlı somut uygulamadır: Queue<String> todo = new ArrayDeque<>();.

offer(e) sona ekler, poll() baştaki elemanı çıkarıp döndürür, peek() baştaki elemanı gösterir ama listeden silmez. Kuyruk boşsa poll ve peek null döner; remove ise hata fırlatır.

Deque iki üçlü kuyruk

Deque<E> (double-ended queue) her iki uçtan da ekleme ve çıkarma yapar. ArrayDeque hem Queue hem Deque uygulamadır. Metotlar: addFirst(e), addLast(e), removeFirst(), removeLast(), peekFirst(), peekLast().

Örneğin bir tarayıcı geçmişi geri/ileri yapısında addLast ile ileri, removeLast ile geri simülasyonu yapılır. Stack gerektiğinde push/pop de Deque üzerinde çalışır; eski Stack sınıfı yerine ArrayDeque önerilir.

Uygulama Yapılacaklar kuyruğu kur

Queue<String> todo = new ArrayDeque<>(); tanımla. todo.offer("Mail at"); ve todo.offer("Toplantı"); ile iki iş ekle. String first = todo.poll(); ile ilk işi çıkar ve System.out.println(first); ile yazdır. System.out.println(todo.size()); ile kalan iş sayısını yazdır.

Başlangıç kodu

Main.java
import java.util.Queue;
import java.util.ArrayDeque;

public class Main {
    public static void main(String[] args) {
        // Queue<String> tanimla, iki is ekle, ilk isi cikar ve yazdir, kalan sayi

    }
}

Örnek çözüm

Main.java
import java.util.Queue;
import java.util.ArrayDeque;

public class Main {
    public static void main(String[] args) {
        Queue<String> todo = new ArrayDeque<>();
        todo.offer("Mail at");
        todo.offer("Toplantı");
        String first = todo.poll();
        System.out.println(first);
        System.out.println(todo.size());
    }
}

Beklenen çıktı

Mail at
1

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Kuyruğa ekleme çağrısını tamamla

Soru
todo.____("Mail at");
Cevap
todo.offer("Mail at");

Açıklama: offer metodu kuyruğun sonuna eleman ekler.

2 todo.poll() ne yapar?

  • Baştaki elemanı çıkarıp döndürür Doğru cevap
  • Sadece baştaki elemanı gösterir
  • Kuyruğun sonuna eleman ekler
  • Kuyruğu boşaltır

Açıklama: poll baştaki elemanı çıkarıp döndürür; kuyruk boşsa null verir.

3 Queue/Deque metotlarını eşleştir

Kavram Anlamı
offer(e) Sona ekler
poll() Baştaki elemanı çıkarır
peek() Baştaki elemanı gösterir
addFirst(e) Başa ekler

Orta seviye bölümündeki tüm dersler