Yineleyiciler Nasıl ve Nerede Kullanılır?

Yineleyiciler nasıl kullanılır?

Cells Yineleyici

Hücrelerin yineleyicisine erişmenin çeşitli yolları vardır ve uygulama gereksinimlerine göre bu yöntemlerden herhangi biri kullanılabilir. İşte hücrelerin yineleyicisini döndüren yöntemler.

  1. Cells.iterator
  2. Satır.yineleyici
  3. Range.iterator

Yukarıda belirtilen yöntemlerin tümü, başlatılmış olan hücrelerin koleksiyonunda gezinmeye izin veren yineleyiciyi döndürür.

Aşağıdaki kod örneği, bir hücre koleksiyonu için Iterator sınıfının uygulanmasını gösterir.

Satır Yineleyici

Rows Iterator’a RowCollection.iterator yöntemi kullanılırken erişilebilir. Aşağıdaki kod örneği, Iterator for RowCollection sınıfının uygulanmasını gösterir.

Sütunlar Yineleyici

Columns Iterator’a ColumnCollection.iterator yöntemi kullanılırken erişilebilir. Aşağıdaki kod örneği, Iterator for ColumnCollection sınıfının uygulanmasını gösterir.

Yineleyiciler nerede kullanılır?

Yineleyici kullanmanın avantajlarını tartışmak için gerçek zamanlı bir örnek alalım.

Senaryo

Bir uygulama gereksinimi, değerlerini okumak için belirli bir Çalışma Sayfasındaki tüm hücreleri geçmektir. Bu hedefi gerçekleştirmenin birkaç yolu olabilir. Birkaçı aşağıda gösterilmiştir.

Görüntüleme Aralığını Kullanma
MaxDataRow ve MaxDataColumn’u Kullanma

Yukarıda bahsedilen yaklaşımların her ikisinin de aşağı yukarı benzer bir mantık kullandığını gözlemleyebileceğiniz gibi; hücre değerlerini okumak için koleksiyondaki tüm hücreler üzerinde döngü yapın. Bu, aşağıda tartışıldığı gibi birkaç nedenden dolayı sorunlu olabilir.

  1. MaxRow, MaxDataRow, MaxColumn, MaxDataColumn ve MaxDisplayRange gibi API’ler ilgili istatistikleri toplamak için fazladan zaman gerektirir. Veri matrisinin (satır x sütun) büyük olması durumunda, bu API’lerin kullanılması performans düşüşüne neden olabilir.
  2. Çoğu durumda, belirli bir aralıktaki tüm hücreler örneklenmez. Bu gibi durumlarda, matristeki her hücreyi kontrol etmek, yalnızca başlatılmış hücreleri kontrol etmeye kıyasla o kadar verimli değildir.
  3. Bir döngüdeki bir hücreye Cells.get(rowIndex, columnIndex) olarak erişilmesi, bir aralıktaki tüm hücre nesnelerinin somutlaştırılmasına neden olur ve bu da sonunda OutOfMemoryError’a neden olabilir.
Çözüm

Yukarıda belirtilen gerçeklere dayanarak, yineleyicilerin kullanılması gereken olası senaryolar aşağıdadır.

  1. Hücre koleksiyonuna salt okunur erişim gereklidir, yani; gereksinim sadece hücreleri incelemektir.
  2. Çok sayıda hücre geçilecek.
  3. Yalnızca başlatılmış hücreler/satırlar/sütunlar geçilmelidir.