C# ArrayList Class

Merhaba arkadaşlar,

Collections nesnelerini daha iyi anlamak için System.Collection isim alanında bulunan bazı arayüzleri uygulayarak kendi koleksiyon nesnelerimizi geliştirip işin mutfağında neler oluyor öğrenmeye çalışmıştık.

System.Collection isim alanındaki arayüzler ve koleksiyon tabanlı sınıfların tamamına buradan ulaşabilirsiniz.

Bu yazımda System.Collection isim alanında bulunan koleksiyon tabanlı ArrayList sınıfını ele alıp bu sınıfın avantajlarından, dezavantajlarından bahsedip örneklerle pekiştiriyor olacağız. Şimdi dilerseniz ArrayList sınıfının tanımı ile başlayalım.

ArrayList boyu dinamik olarak değişen ve farklı veri türlerini tek çatı koleksiyonda barındıran .Net Kütüphanesinde hazır olarak bulunan koleksiyon tabanlı bir sınıf diyebiliriz.

ArrayList sınıfı klasik dizilerde programlama yaparken karşımıza birçok sorun çıkabiliyordu. Bu sorunları yenmek için kırk takla atmak zorunda kalabiliyoruz. Hatırlarsanız ki klasik dizilerde dizinin boyutu derleme zamanında bilinme zorunluluğu vardı. Yani klasik bir dizi oluşturduğumuzda dizinin kaç elemanlı olacağını bildiriyorduk.

Bir diğer sorun ise tanımladığımız klasik diziler aynı tür nesneleri içeren fonksiyonlardır. İşte bu ve buna benzer diğer sorunların üstesinden gelmek için ArrayList sınıfını devreye giriyor. ArrayList koleksiyon tabanlı sınıfı kullandığımızda dizinin boyutunu belirtmeye gerek yok. Çalışma zamanında istediğimiz gibi eleman ekleyebilir çıkartabiliriz. Bununla birlikte farklı veri türünden nesneleri koleksiyonda saklayabiliriz. Farklı türlerin aynı koleksiyonda bulunması boxing ve unboxing işlemleri ile kullanılır. Buda bu sınıfları kullandığımızda performans sorunu çıkarabilir. Neden performans sorunu yaşayabiliriz sorusunu merak ediyorsanız C# Collections yazımda bunu detaylı açıklamıştım. Yazıya buradan ulaşabilirsiniz.

Not: ArrayList kapasitesini artıracağı zaman mevcut kapasitenin 2 katına çıkarır.

ArrayList sınıfı System.Collection isim alanında bulunan birden çok arayüzü uygulamaktadır. Bu arayüzleri daha önceki yazılarımda detaylı bahsetmiştim.

ArrayList sınıfının 3 tane aşırı yüklenmiş metodu vardır.

Daha önceden bahsettiğim ve dikkat etmemiz gereken nokta diziye eleman eklerken eklenen elemanın boxing işlemi ile object referansına dönüştürülmesidir. Dizinin elemanlarına erişmek için boxing işleminin tersi unboxing işlemi yapılır. Bu yüzden unboxing işlemini açıkça yapamayız.

Her ne kadar kulağa hoş gelse de farklı türden nesneleri tek bir çatı koleksiyonda yönetebilme çok nadir görülür. Bunun sebebi ise bu tür verileri tek çatı altında toplamak algoritmik açıdan çok sık karşılaşacağımız bir durum nedir. Birbirleriyle bağlantılı olan ve temel veya türemiş referanslarını bu tür dizilerde saklamak daha mantıklı olacaktır.

Ne zaman tercih edelim: Klasik dizilerde gerçekleştirilmesi zor olan birtakım işlerde bu sınıfı tercih edebiliriz. Örneğin bir dizinin herhangi bir yerine eleman eklenmesi gibi.

Not: ArrayList sınıfının elemanlarına klasik dizilerde olduğu gibi indeks yardımı ile erişebilirsiniz

Bu kadar bilgiye doyduk gibi 🙂 ArrayList sınıfının kullanışlı metot ve özellikleri var ve bu metot ve özelliklerden bazılarına bakalım. Console uygulaması üzerinden ArrayList sınıfını kullanarak nesne oluşturacağız ve o nesne üzerinden özelliklerini ve metotlarını ele alacağız.

ArrayList sınıfının diğer özellik ve metotlarında buradan daha detaylı inceleyebilirsiniz.

Bu yazımda .Net kütüphanesinde hazır bulunan koleksiyon tabanlı ArrayList sınıfını ele aldık. ArrayList sınıfının avantajlarını ve dezavantajlarını inceledik.

Bir sonraki yazımda System.Collection isim alanında hazır bulunan koleksiyon tabanlı HashTable sınıfını inceleyeceğiz. Bu sınıfın avantajlarını, dezavantajlarını ve kullanabilirliğini ele alacağız. Bir sonraki yazımızda görüşmek üzere 🙂

Kaynaklar:

Her Yönüyle C# 7.0, Sefer Algan, Pusula Yayincilik

https://docs.microsoft.com/tr-tr/dotnet/api/system.collections.arraylist?view=netframework-4.8

https://docs.microsoft.com/tr-tr/dotnet/csharp/programming-guide/concepts/collections

Leave a Comment