Iterator
- Java kursu
- Orta seviye
- Ders 94/116
- 5 dk
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
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
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
while (it.____()) {
String s = it.next();
}
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 |