Java'da yineleyici en sık kullanılanlardan biridir Java Koleksiyonları Çerçevesindeki imleçler . Bir koleksiyonun öğeleri arasında tek tek geçiş yapmak veya yineleme yapmak için kullanılır.
- Elemanları yalnızca ileri yönde hareket ettirmek için kullanılır.
- Remove() işlevini kullanarak geçiş sırasında öğeleri güvenli bir şekilde kaldırır.
- Iterator, tüm koleksiyon türlerine (Liste Kümesi ve Kuyruk) uygulanan evrensel bir imleçtir.
Yineleyicinin Bildirgesi
genel arayüz Yineleyici
Burada E, yinelenecek öğelerin türünü temsil eder.
Yineleyicinin Nesne Oluşturulması
Bir Iterator nesnesi, bir koleksiyon nesnesinde iterator() yöntemi çağrılarak oluşturulur. Burada her bir öğeyi bir dizide dolaşmak ve yazdırmak için bir Yineleyici kullanacağız. Dizi Listesi .
JavaKoleksiyon
isimler = yeni ArrayList<>();
Yineleyiciitr = isimler.iterator();
import java.util.ArrayList; import java.util.Iterator; public class Geeks { public static void main(String[] args) { // Create an ArrayList and add some elements ArrayList<String> al = new ArrayList<>(); al.add('A'); al.add('B'); al.add('C'); // Obtain an iterator for the ArrayList Iterator<String> it = al.iterator(); // Iterate through the elements and print each one while (it.hasNext()) { // Get the next element String n = it.next(); System.out.println(n); } } }
Çıkış
A B C
Yineleyici Hiyerarşisi
Yineleyici, java.util paketi ve tüm koleksiyon sınıfları tarafından alt arayüzleri aracılığıyla uygulanır.
Yineleyici-imleçYineleyici Arayüzü Yöntemleri
Yineleyici arayüzü aşağıda listelenen üç yöntemi tanımlar:
- hasNext(): Yinelemede daha fazla öğe varsa true değerini döndürür.
- Sonraki(): Yinelemedeki bir sonraki öğeyi döndürür. Fırlatıyor NoSuchElementException daha fazla öğe yoksa.
- kaldırmak(): next() tarafından döndürülen son öğeyi kaldırır. Bu yöntem next() çağrısı başına yalnızca bir kez çağrılabilir.
Not : Remove() yöntemi aşağıdaki gibi iki istisna oluşturabilir:
Dahili Çalışma
Bu bölümde Java Iterator ve yöntemlerinin dahili olarak nasıl çalıştığını anlamaya çalışacağız. Bu işlevselliği anlamak için aşağıdaki LinkedList nesnesini ele alalım.
1. Adım: Şimdi List nesnesi üzerinde aşağıda gösterildiği gibi bir Iterator nesnesi oluşturalım:
Yineleyici
şehirlerIterator = şehirler.iterator();
'CitiesIteartor' yineleyicisi aşağıdaki gibi görünecektir:
Adım-1Burada Yineleyicinin İmleci Listenin ilk öğesinin öncesini işaret ediyor.
Adım 2: Şimdi aşağıdaki kod parçasını çalıştıracağız.
1 ile 10 arasında rastgele sayı
şehirlerIterator.hasNext();
şehirlerIterator.next();
Adım-2Yukarıdaki kod parçasını çalıştırdığımızda, yineleyicinin imleci yukarıdaki şemada gösterildiği gibi listedeki ilk öğeyi işaret eder.
3. Adım: Şimdi aşağıdaki kod parçasını çalıştıracağız.
şehirlerIterator.hasNext();
şehirlerIterator.next();
Adım-3
Yukarıdaki kod parçasını çalıştırdığımızda, Iterator'ın İmleci yukarıdaki şemada gösterildiği gibi listedeki ikinci öğeyi işaret eder.
Adım 4: Yineleyicinin İmlecini Listenin son öğesine ulaşmak için bu işlemi yapın.
Adım-4Adım 5: Son öğeyi okuduktan sonra aşağıdaki kod parçasını çalıştırırsak false değeri döndürür.
şehirlerIterator.hasNext();

Yineleyicinin İmleci Listenin son öğesinden sonrasını işaret ederken hasNext() yöntem yanlış değer döndürür.
Not: Java Iterator yalnızca ileri yönde yinelemeyi desteklediğinden tek yönlü imleç olarak bilinir. Buna karşılık ListIterator, her iki yönde de geçişe izin veren çift yönlüdür.
Java Yineleyici: İleri YönÖrnek: Burada ArrayList'teki tek öğelerin arasında geçiş yapmak ve bunları kaldırmak için bir Yineleyici kullanacağız.
Javaimport java.util.ArrayList; import java.util.Iterator; public class Geeks { public static void main(String[] args) { // Creating an ArrayList of Integer type ArrayList<Integer> al = new ArrayList<>(); // Adding elements to the ArrayList for (int i = 0; i < 10; i++) { al.add(i); } // Printing the original list System.out.println('Original List: ' + al); // Creating an Iterator for the ArrayList Iterator<Integer> itr = al.iterator(); // Iterating through the list and removing odd elements while (itr.hasNext()) { // Getting the next element int i = itr.next(); System.out.print(i + ' '); // Removing odd elements if (i % 2 != 0) { itr.remove(); } } System.out.println(); // Printing the modified list after removal of odd elements System.out.println('Modified List: ' + al); } }
Çıkış
Original List: [0 1 2 3 4 5 6 7 8 9] 0 1 2 3 4 5 6 7 8 9 Modified List: [0 2 4 6 8]
Açıklama: Yukarıdaki örnekte, tamsayılardan oluşan bir ArrayList oluşturuyoruz, ardından bir Yineleyici kullanarak bunun üzerinden yineliyoruz ve tüm tek sayıları kaldırıyoruz. Listeyi tek öğeleri kaldırmadan önce ve çıkardıktan sonra yazdırır ve değiştirilen listeyi yalnızca çift sayılarla yazdırır.