Yineleyiciler Nasıl ve Nerede Kullanılır?
Yineleyici arabiriminin bir nesnesi, bir koleksiyonun tüm öğeleri arasında gezinmek için kullanılabilir. Yineleyiciler, bir koleksiyondaki verileri incelemek için kullanılabilir, ancak temeldeki koleksiyonu değiştirmek için kullanılamaz. Genel olarak, bir koleksiyonun içerikleri arasında geçiş yapmak üzere bir yineleyici kullanmak için aşağıdaki adımlar atılmalıdır:
- Koleksiyonun yineleyici yöntemini çağırarak koleksiyonun başlangıcına bir yineleyici edinin.
- hasNext yöntemine çağrı yapan bir döngü kurun. HasNext yöntemi true değerini döndürdüğü sürece döngünün yinelenmesini sağlayın.
- Döngü içinde, sonraki yöntemi çağırarak her bir öğeyi elde edin.
Aspose.Cells API’ler bir dizi yineleyici sağlar, ancak bu makale temel olarak aşağıda listelenen üç türü tartışır.
- Cells Yineleyici
- Satır Yineleyici
- Sütunlar Yineleyici
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.
- Cells.iterator
- Satır.yineleyici
- 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.
- 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.
- Ç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.
- 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.
- Hücre koleksiyonuna salt okunur erişim gereklidir, yani; gereksinim sadece hücreleri incelemektir.
- Çok sayıda hücre geçilecek.
- Yalnızca başlatılmış hücreler/satırlar/sütunlar geçilmelidir.