Iterators: Koleksiyonlar Üzerinde Güvenli Gezinme

crazy_coder

Moderatör
Katılım
20 Şub 2026
Mesajlar
204
Tepkime puanı
0
Puanları
16
Iterator: Koleksiyonlarda Güvenli Yolculuk



1. Iterator Nedir?​


Iterator, bir koleksiyonun elemanları arasında sırayla dolaşmamızı sağlayan bir arayüzdür (interface). Koleksiyonun iç yapısını bilmemize gerek kalmadan, elemanları tek tek "ziyaret etmemize" olanak tanır.

Iterator'ın 3 Temel Metodu:​


hasNext(): Bir sonraki eleman var mı? (Geriye boolean döner).

next(): Bir sonraki elemanı getirir ve imleci (cursor) bir adım ilerletir.

remove(): Üzerinde bulunulan son elemanı koleksiyondan güvenli bir şekilde siler.

2. Neden Iterator Kullanmalıyız?​


Geleneksel bir döngüde eleman silmek risklidir. Iterator kullanmanın temel avantajı, gezinme esnasında koleksiyonun yapısını bozmadan modifikasyon yapabilmesidir.

Java:
List<String> sehirler = new ArrayList<>(Arrays.asList("İstanbul", "Ankara", "İzmir", "Bursa"));

// Iterator oluşturma
Iterator<String> it = sehirler.iterator();

while (it.hasNext()) {
String sehir = it.next();
if (sehir.equals("Ankara")) {
it.remove(); // GÜVENLİ SİLME: Döngü hata vermeden devam eder.
}
}

Kritik Not: Eğer it.remove() yerine sehirler.remove("Ankara") kullansaydınız, Java çalışma anında hata fırlatacaktı.

3. ListIterator: Çift Yönlü Gezinme​


Sadece List yapılarında kullanılabilen ListIterator, normal Iterator'ın daha gelişmiş bir versiyonudur.

Çift Yönlüdür: Hem ileri (next()) hem de geri (previous()) gidebilir.

Eleman Ekleme/Güncelleme: Sadece silme değil, add() ve set() metotlarıyla eleman ekleme veya değiştirme yapabilir.

4. Iterator vs For-Each Döngüsü​


ÖzellikFor-Each DöngüsüIterator
OkunabilirlikÇok yüksek, temiz kod.Biraz daha karmaşık yapı.
Silme İşlemiGüvenli değil (Hata fırlatır).Tamamen güvenli.
Koleksiyon TürüDizi ve Iterable olan her şey.Tüm Collection Framework üyeleri.
İşlevsellikSadece okuma.Okuma ve güvenli silme.

5. Ne Zaman Kullanılmalı?​


Eğer koleksiyonu sadece ekrana yazdırmak veya içindeki verileri toplamak gibi salt okunur bir işlem yapacaksanız for-each kullanın.

Eğer döngü sırasında belirli kriterlere göre eleman silmeniz gerekiyorsa mutlaka Iterator kullanın.



Sonuç

Iterator, Java'nın koleksiyon yönetimi konusundaki "emniyet kemeri"dir. Modern Java (Java 8+) ile birlikte gelen removeIf() gibi metotlar arka planda Iterator mantığını kullanarak işleri kolaylaştırsa da, bu yapının nasıl çalıştığını bilmek derinlemesine Java hakimiyeti için şarttır.
 
Geri
Üst