ListIterator
- Java kursu
- Orta seviye
- Ders 96/116
- 5 dk
ListIterator ile çift yönlü gezinmeyi öğrenirsin.
ListIterator<E> arayüzü
ListIterator<E>, Iterator'ın iki yönlü genişletilmiş halidir; yalnızca List'te kullanılır. hasPrevious() ve previous() ile geriye gidebilirsin. listIterator() ile alınır; başlangıç imleci listenin başındadır.
Iterator'a ek olarak nextIndex(), previousIndex(), add(e) ve set(e) metotları vardır. add imlecin bulunduğu yere eleman ekler; set son döndürülen elemanı değiştirir. Geriye dönük tarama örneğin geri/ileri listelerinde kullanışlıdır.
Geriye dönük tarama
ListIterator ile önce ileri sonra geri gidebilirsin. İmleç her zaman elemanların arasında durur; next() sağdaki elemanı verir ve imleç sağa kayar, previous() soldaki elemanı verir ve imleç sola kayar. Bu yüzden next ve hemen ardından previous aynı elemanı iki kez verir.
Örneğin bir metin düzenleyicide imleç hareketlerini simüle etmek için ListIterator idealdir. set ile bir kelimeyi değiştirmek ya da add ile yeni kelime sokmak mümkündür.
Uygulama ListIterator ile ileri ve geri gez
List<String> names = new ArrayList<>(); tanımla; "Ayşe", "Alex" ekle. ListIterator<String> it = names.listIterator(); al. Önce it.next() ile bir eleman al ve System.out.println(it.previous()); ile geri dönüp aynı elemanı tekrar yazdır. Böylece next ve previous'ın aynı elemanı iki kez verdiği gösterilir.
Başlangıç kodu
import java.util.List;
import java.util.ArrayList;
import java.util.ListIterator;
public class Main {
public static void main(String[] args) {
// List<String> tanımla, iki isim ekle, ListIterator al, next sonra previous ile yazdır
}
}Örnek çözüm
import java.util.List;
import java.util.ArrayList;
import java.util.ListIterator;
public class Main {
public static void main(String[] args) {
List<String> names = new ArrayList<>();
names.add("Ayşe");
names.add("Alex");
ListIterator<String> it = names.listIterator();
System.out.println(it.next());
System.out.println(it.previous());
}
}Beklenen çıktı
Ayşe Ayşe
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 ListIterator metotlarını eşleştir
| Kavram | Anlamı |
|---|---|
hasPrevious() |
Geriye eleman var mı |
previous() |
Önceki elemanı verir |
add(e) |
İmlece eleman ekler |
set(e) |
Son elemanı değiştirir |
2 Geri çağrısını tamamla
while (it.has____()) {
String s = it.previous();
}
while (it.hasPrevious()) {
String s = it.previous();
}
Açıklama: hasPrevious geriye eleman var mı diye sorar.
3 ListIterator hangi koleksiyonla çalışır?
- Yalnızca Set
- Yalnızca List Doğru cevap
- Yalnızca Queue
- Tüm koleksiyonlar
Açıklama: ListIterator yalnızca List'te kullanılır; çünkü indeks gerektirir.