Skip to main content

Java ListIterator Arayüzü: İleri-Geri Dolaşım ve CRUD İşlemleri

🚀 Bu Rehberde Ne Öğreneceksiniz?

Bu rehberde, Java'da ListIterator arayüzünü detaylı şekilde öğreneceksiniz.
Liste tabanlı sınıflarda ileri ve geri indeksleme, ekleme-güncelleme-silme (CRUD) işlemlerini nasıl gerçekleştireceğinizi adım adım göreceksiniz.


🧠 Teknik Özet

  • Ana Konu: Java ListIterator arayüzü.
    oaicite:1
  • Çözülen Problem: Sadece ileri yön destekleyen yineleyiciler yerine hem ileri hem geri dolaşım ve CRUD işlemi sunma.
  • Kullanıcının İzlediği Adımlar: ListIterator nesnesi alma → ileri dolaşım → geri dolaşım → eleman ekleme/güncelleme/silme işlemleri.

1. ListIterator’nun Temel Özellikleri

  • ListIterator yalnızca List uygulamalarında çalışır (örneğin: ArrayList, LinkedList).
    oaicite:2
  • İleri ve geri yönde dolaşımı destekler: next() / previous().
  • CRUD (Create, Read, Update, Delete) işlemlerine izin verir: add(), set(), remove().
  • İmleci belirli bir elemandan önce ya da sonra başlatabilir; imleç elemanlar arasında konumlanır.
    oaicite:3

2. ListIterator Metotları ve Kısaca Açıklamaları

MetotAçıklama
void add(E e)Belirtilen öğeyi geçerli konumdan hemen önce ekler.
boolean hasNext()İleri yönde sonraki bir öğe varsa true döner.
E next()İleri yöndeki öğeyi döner ve imleci ilerletir.
int nextIndex()next() tarafından döndürülecek öğenin indeksini verir.
boolean hasPrevious()Geri yönde önceki bir öğe varsa true döner.
E previous()Geri yöndeki öğeyi döner ve imleci geriye kaydırır.
int previousIndex()previous() tarafından döndürülecek öğenin indeksini verir.
void remove()next() veya previous() ile döndürülmüş öğeyi siler.
void set(E e)next() veya previous() tarafından döndürülmüş öğeyi yeni değerle değiştirir.

3. ListIterator Kullanımı: Adım Adım

Adım 1: ListIterator Nesnesi Alma

List<String> liste = new LinkedList<>();
liste.add("Ali");
liste.add("Veli");
liste.add("Ayşe");
ListIterator<String> iter = liste.listIterator();

Bu kod, LinkedList üzerinde bir ListIterator oluşturur.

Adım 2: İleri Yönde Dolaşım


while (iter.hasNext()) {
System.out.println(iter.next());
}

Bu kod, listedeki tüm öğeleri sırayla yazdırır.

Adım 3: Geri Yönde Dolaşım


while (iter.hasPrevious()) {
System.out.println(iter.previous());
}

Bu kod, imleç listenin sonunda ise listeyi sondan başa doğru dolaşır.

Adım 4: Eleman Ekleme, Güncelleme, Silme


iter = liste.listIterator(); // baştan başlat
while (iter.hasNext()) {
String isim = iter.next();
if (isim.equals("Veli")) {
iter.set("Mehmet"); // Veli yerine Mehmet yazar
iter.add("Zeynep"); // Mehmet’ten sonra Zeynep ekler
}
}

Bu kod, listedeki belirli bir öğeyi değiştirir ve yeni öğe ekler.


4. Iterator ile ListIterator Arasındaki Farklar

⚙️ Özellik🔁 Iterator🔂 ListIterator
YönSadece ileriİleri ve geri
CRUD DesteğiYalnızca okuma ve silmeEkleme, güncelleme, silme
Kullanılabilir SınıflarTüm CollectionSadece List uygulamaları
Parçalanabilirlik (Spliterator)HayırHayır (ListIterator paralel yürütme desteklemez)

💬 Sıkça Sorulan Sorular (SSS)

  1. ListIterator neden Collection arayüzünün tamamında kullanılmaz?

Çünkü sadece List türü arayüzleri için tanımlanmıştır; tüm Collection üzerinde çalışmaz.

  1. Geri yönde dolaşım nedir ve ne işe yarar?

hasPrevious() ve previous() metotları sayesinde listenin sonundan başına doğru dolaşabilirsiniz; ters sipariş gerektiren işlemler için uygundur.

  1. nextIndex() ve previousIndex() ne işe yarar?

Bu metotlar, sıradaki next() ya da previous() çağrısının indeksini verir; imlecin pozisyonunu bilmek için faydalıdır.

  1. ListIterator paralel işleme destekler mi?

Hayır; bu yapı paralel yürütme desteği içermez. Bu tür ihtiyaçlar için Spliterator ya da Stream API tercih edilir.

  1. ListIterator kullanırken nelere dikkat edilmeli?

Listeyi doğrudan değiştirmek yerine ListIterator’ın add(), set() ya da remove() metotlarını kullanın; aksi halde ConcurrentModificationException oluşabilir.


🔚 Sonuç

Java ListIterator arayüzü, yalnızca ileri değil aynı zamanda geri yönlü dolaşım ve CRUD işlemlerini destekleyerek List üzerinde daha esnek kontrol sağlar. ListIterator’ı doğru kullandığınızda, koleksiyonlarınız üzerinde daha güçlü ve okunaklı iterasyon işlemleri gerçekleştirebilirsiniz. Bu yetenekleri Rabisu Bulut platformunda kuracağınız bir sanal sunucuda deneyerek pratik bilginizi pekiştirebilirsiniz. ☁️