Koleksiyonlar-I

Koleksiyonlar, programlamada sıklıkla ihtiyaç duyulan yapılardan olup System.Collections isim uzayı altında yer alırlar. Bu yapılar içerisinde aynı türden veriler saklanabildiği gibi farklı türden veriler de saklanabilir. Bunun için Visual Studio.Net’in sunmuş olduğu çeşitli koleksiyon sınıfları bulunmaktadır. C++ dilinde konteyner, Java dilinde Collections Framework olarak adlandırılan bu sınıflar, C# dilinde ise koleksiyon olarak adlandırılmaktır.

Koleksiyonlar; C++, Java gibi diğer programlama dillerindeki kullanım amacına bakıldığında temel olarak aynı ya da farklı türde birden fazla verinin veya nesnenin gruplanıp saklanmasına ve bunlara erişim sağlanmasına olanak tanıyan bir sınıf olarak tanımlanabilir. Bu tanıma göre dizilerle benzerlik gösterdiği görülebilir ancak koleksiyonların dizilerden ayrıldığı temel farklılıklar bulunmaktadır. Bunlardan en önemlisi dizilerde aynı türden veriler saklanabilir, koleksiyonlarda ise farklı türden verilerin saklanması mümkündür.

System.Collections isim uzayının altında birçok ara yüz bulunmaktadır. Bu ara yüzler kullanılarak koleksiyon sınıfları için genel karakteristik tanımlaması yapılmaktadır. Örneğin ArrayList sınıfı koleksiyon sınıfları arasında sıklıkla kullanılır ve IList ara yüzünü uygulamaktadır. Bu yüzden bazı geliştiriciler tarafından liste tipi koleksiyon olarak adlandırılmaktadır.

System.Collections isim uzayının altında yer alan non generic koleksiyon sınıflarının temel özelliği farklı türdeki verilerin boxing işlemi ile object türüne dönüştürülerek saklanabilmesidir. Bu başlık altında Non Generic koleksiyonlar arasında en sık kullanılan ArrayList, Hashtable ve SortedList sınıfları incelenecektir.

System.Collection isim uzayı altında yer alan ArrayList sınıfı, içerisine aktarılan değerlerin boxing işlemi ile object türüne dönüştürüldüğü ve eleman sayısı belirlenmeden tanımlama yapıldığı koleksiyon türüdür. Dizilerde farklı türde eleman barındırılamaması ve dizi boyutunun dinamik bir şekilde düzenlenememesi sebebiyle geliştiriciler tarafından ArrayList sınıfı sıklıkla tercih edilir.

System.Collections isim uzayı altında yer alan HashTable sınıfı, barındırdığı elamanlara ait değerlerin indeks numarası yerine benzersiz bir değer kullanılarak saklandığı ve bu şekilde erişim sağlandığı koleksiyon türüdür. Koleksiyon elemanlarına indeks numarası yerine farklı bir değer ile erişilmesi gerekebilir. Aynı şekilde koleksiyon elemanlarının benzersiz bir değere sahip olması ve koleksiyon içerisinde arama yapılırken bu benzersiz değerin kullanılması gerekebilir.

HashTable sınıfında kullanılan anahtar değerin benzersiz olması zorunludur. Yani bir anahtar değer sadece bir kere kullanılabilir. Bir anahtar değerin HashTable sınıfı içerisinde daha önceden kullanılıp kullanılmadığını öğrenmek için ContainsKey() metodu kullanılır.

SortedList sınıfı, elemanlarına erişimin hem HashTable sınıfında olduğu gibi anahtar aracılığıyla hem de indeks numarası kullanılarak yapıldığı bir koleksiyon türüdür. System.Collections isim uzayının altında yer alan SortedList sınıfı, elemanlarının küçüklük/büyüklük değerine göre veya alfabetik olarak sıralanmasına olanak tanır. Bir başka ifadeyle elemanlarını sıralı bir şekilde saklayabilen ve indeks numarası kullanılarak da erişilebilen HashTable olarak tanımlanabilir. SortedList sınıfına eklenen elemanlar anahtar değerleri baz alınarak sıralanırlar.