Iterator ların Nasıl ve Nerede Kullanılacağı

Iterator’ların Nasıl Kullanılacağı

Hücreler Iterator’ı

Hücrelerin iterator’una erişmenin çeşitli yolları vardır ve uygulama gereksinimlerine bağlı olarak herhangi birini kullanabilirsiniz. İşte hücrelerin iterator’ını döndüren yöntemler:

  1. Cells.iterator
  2. Row.iterator
  3. Range.iterator

Yukarıda bahsedilen tüm yöntemler, başlatılmış hücreler koleksiyonunu dolaşmaya izin veren iterator’ı 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östermektedir.

Satırlar Iterator’ı

Satırlar Iterator’ı, RowCollection.iterator yöntemi kullanılırken erişilebilir. Aşağıdaki kod örneği, RowCollection sınıfı için Iterator’ın uygulanmasını göstermektedir.

Sütunlar Iterator’ı

Sütunlar Iterator’ı, ColumnCollection.iterator yöntemi kullanılırken erişilebilir. Aşağıdaki kod örneği, ColumnCollection sınıfı için Iterator’ın uygulanmasını göstermektedir.

Iterator’ların Nerede Kullanılacağı

Iterator’ların kullanılmasının avantajlarını tartışmak için gerçek bir örnek ele alalım.

Senaryo

Bir uygulama gereksinimi, belirli bir Çalışma Sayfasındaki tüm hücreleri gezinerek değerlerini okumaktır. Bu hedefi uygulamanın birkaç yolu olabilir. Bazıları aşağıda gösterilmiştir.

Görüntü Aralığı Kullanarak
MaxDataRow & MaxDataColumn Kullanarak

Yukarıda bahsedilen her iki yaklaşımın da oldukça benzer mantığı kullandığını görebilirsiniz; yani, koleksiyondaki tüm hücrelerin üzerinden dolaşmak. Bu, aşağıda tartışılan birkaç nedenle sorunlu olabilir.

  1. MaxRow, MaxDataRow, MaxColumn, MaxDataColumn & MaxDisplayRange gibi API’ler, ilgili istatistikleri toplamak için ekstra zaman gerektirir. Veri matrisi (satır x sütun) büyükse, bu API’leri kullanmak performans cezası getirebilir.
  2. Çoğu durumda, verilen bir aralıktaki tüm hücreler oluşturulmamıştır. Bu tür durumlarda, matristeki her hücreyi kontrol etmek, yalnızca başlatılmış hücreleri kontrol etmekten daha verimli değildir.
  3. Bir döngü içinde Cells.get(rowIndex, columnIndex) gibi bir hücreye erişmek, bir aralıktaki tüm hücre nesnelerinin oluşturulmasına neden olur, bu da sonunda OutOfMemoryError’a neden olabilir.
Sonuç

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

  1. Hücre koleksiyonunun salt okunur erişimi gereklidir; yani, yalnızca hücreleri denetlemek gereklidir.
  2. Büyük sayıda hücre gezilmelidir.
  3. Yalnızca başlatılmış hücreler/satırlar/sütunlar gezilmelidir.