logo

Java'da yineleyici

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 .

Koleksiyonisimler = yeni ArrayList<>();
Yineleyiciitr = isimler.iterator();

Java
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.

listiterator_extends_iterator_' title=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:

Java Yineleyici Adım 1' loading='lazy' title=Adım-1

Burada 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();

Java Yineleyici Adım 2' loading='lazy' title=Adım-2

Yukarı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();

Java Yineleyici Adım 3' loading='lazy' title=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.

Java Yineleyici Adım n' loading='lazy' title=Adım-4

Adı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();

Sonunda Java Yineleyici' loading='lazy' title=

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-Ilterator-6' loading='lazy' title=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.

Java
import 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.