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ü
| Özellik | For-Each Döngüsü | Iterator |
|---|---|---|
| Okunabilirlik | Çok yüksek, temiz kod. | Biraz daha karmaşık yapı. |
| Silme İşlemi | Güvenli değil (Hata fırlatır). | Tamamen güvenli. |
| Koleksiyon Türü | Dizi ve Iterable olan her şey. | Tüm Collection Framework üyeleri. |
| İşlevsellik | Sadece 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.