CodeBlanks Logo Icon CodeBlanks

Iterator

Iterator ile koleksiyon gezmeyi öğrenirsin.

Iterator<E> arayüzü

Iterator<E> bir koleksiyonun elemanlarını tek tek dolaşmak için kullanılan evrensel arayüzdür. hasNext() sonraki eleman var mı diye sorar, next() bir sonraki elemanı döndürür ve imleci ilerletir.

Bir List'ten Iterator<String> it = names.iterator(); ile Iterator alırsın. Döngü kalıbı: while (it.hasNext()) { String s = it.next(); }. Iterator, koleksiyonu doğrudan değiştirmez; yalnızca okur. Silme için ayrı bir remove metodu vardır.

Dolaşma kalıbı

Iterator kullanmanın standart kalıbı şudur: önce iterator() ile alırsın, sonra while (it.hasNext()) döngüsü açarsın, döngü içinde it.next() ile elemanı okursun. Bu kalıp, for-each'in arkasında da çalışır; Java for-each'i Iterator kullanarak uygular.

next() çağrısı hasNext() olmadan yapılırsa ve imleç sonda ise NoSuchElementException fırlatılır. Bu yüzden döngüde önce hasNext sonra next sırası korunur.

Uygulama Listeyi Iterator ile dolaş

List<String> names = new ArrayList<>(); tanımla; "Ayşe", "Alex" ekle. Iterator<String> it = names.iterator(); ile bir Iterator al. while (it.hasNext()) döngüsü içinde System.out.println(it.next()); ile her elemanı yazdır.

Başlangıç kodu

Main.java
import java.util.List;
import java.util.ArrayList;
import java.util.Iterator;

public class Main {
    public static void main(String[] args) {
        // List<String> tanımla, iki isim ekle, Iterator ile dolaş ve yazdır

    }
}

Örnek çözüm

Main.java
import java.util.List;
import java.util.ArrayList;
import java.util.Iterator;

public class Main {
    public static void main(String[] args) {
        List<String> names = new ArrayList<>();
        names.add("Ayşe");
        names.add("Alex");
        Iterator<String> it = names.iterator();
        while (it.hasNext()) {
            System.out.println(it.next());
        }
    }
}

Beklenen çıktı

Ayşe
Alex

Soru ve cevaplar

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

1 it.hasNext() ne zaman true döner?

  • İmleç koleksiyonun sonuna geldiğinde
  • Koleksiyon boş olduğunda
  • remove çağrıldığında
  • Sonraki eleman bulunduğunda Doğru cevap

Açıklama: hasNext, sonraki eleman varsa true döner.

2 Döngü koşulunu tamamla

Soru
while (it.____()) {
    String s = it.next();
}
Cevap
while (it.hasNext()) {
    String s = it.next();
}

Açıklama: hasNext, sonraki eleman var mı diye sorar.

3 Iterator metotlarını eşleştir

Kavram Anlamı
hasNext() Sonraki var mı
next() Sonraki elemanı verir
iterator() Iterator alır
remove() Son okunanı siler

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