Sesli Özet
← Ünite 12

Ünite 12: Koleksiyonlar 1 — Sesli Özet

Dinleme Premium'a özel. 1. ünitenin sesli özeti ücretsiz; bu ünitenin seslendirme metni de aşağıda ücretsiz okunabilir.
Metni oku

Koleksiyonlar, programlamada birden fazla verinin veya nesnenin gruplanarak saklanmasına ve bu verilere kolayca erişilmesine olanak tanıyan, System.Collections isim uzayı altında bulunan yapılardır. C++ dilinde 'konteyner', Java dilinde 'Collections Framework' olarak adlandırılan bu yapılar, C# programlama dilinde koleksiyon olarak isimlendirilir. Koleksiyonlar yapısal olarak dizilere benzese de aralarında kritik farklar vardır. Diziler sadece aynı türden verileri saklayabilirken, koleksiyonlar farklı türden verileri bir arada tutabilir. Ayrıca diziler System.Array isim uzayında yer alırken, koleksiyonlar System.Collections isim uzayında tanımlanır. Dizilerde boyut önceden belirlenmek zorundayken, koleksiyonlar daha esnek bir yapı sunar. Koleksiyonlarda veriler 'boxing' (kutulama) ve 'unboxing' (kutudan çıkarma) işlemlerine tabi tutulabilir. Ayrıca diziler çok boyutlu olabilirken, koleksiyonlar doğrusal bir yapıdadır ve tanımlanırken 'new' anahtar sözcüğünün kullanılması zorunludur. ArrayList, System.Collections isim uzayı altında yer alan ve eleman sayısı önceden belirlenmeden dinamik olarak tanımlanabilen bir koleksiyon türüdür. İçerisine eklenen her değer 'object' türüne dönüştürülerek saklanır, bu da farklı veri tiplerinin (string, int, bool vb.) aynı liste içerisinde tutulabilmesini sağlar. ArrayList sınıfı, IList arayüzünü uygular; bu sayede elemanlara indeks numarası ile erişilebilir. Add(), Remove(), Clear(), Sort() ve Reverse() gibi metotlar sayesinde veri yönetimi oldukça kolaydır. Örneğin, Add() metodu ile listeye yeni eleman eklenirken, RemoveAt() ile belirli bir indeksteki eleman silinebilir. ArrayList, dizilerin statik yapısından kurtulmak isteyen geliştiriciler için esnek bir çözüm sunar. Ancak, içerdiği elemanların 'object' türüne çevrilmesi (boxing), performans açısından dizilere göre bazı durumlarda maliyetli olabilir. Yine de dinamik boyutlandırma ihtiyacı olan projelerde en sık tercih edilen koleksiyon sınıfıdır. HashTable, verilerin indeks numarası yerine benzersiz bir 'anahtar' (key) kullanılarak saklandığı bir koleksiyon türüdür. Her eleman bir anahtar-değer çifti (key-value pair) olarak tutulur. Bu yapı, özellikle büyük veri setlerinde arama ve erişim işlemlerinde yüksek performans sağlar. HashTable sınıfı IDictionary arayüzünü uygular. Bir elemana erişmek için indeks numarası yerine o elemana atanmış olan benzersiz anahtar kullanılır. Örneğin, bir öğrenci listesinde T.C. kimlik numarası anahtar, öğrencinin adı ise değer olarak tanımlanabilir. HashTable'da anahtar değerinin benzersiz olması zorunludur; aynı anahtar iki kez kullanılamaz. ContainsKey() metodu ile bir anahtarın varlığı, ContainsValue() metodu ile bir değerin varlığı sorgulanabilir. HashTable elemanları sıralı tutmaz; veriler Hash kodlarına göre dizilir, bu da erişim hızını optimize eder. SortedList, HashTable'ın özelliklerini taşıyan ancak elemanlarını anahtar değerlerine göre otomatik olarak sıralayan bir koleksiyondur. Hem anahtar hem de indeks numarası ile elemanlara erişim imkânı sunar. Bu sınıf, verilerin hem hızlı erişilebilir hem de sıralı olması gereken durumlar için idealdir. SortedList'e eleman eklendiğinde, koleksiyon bu elemanları anahtar değerlerine göre küçükten büyüğe veya alfabetik olarak sıralar. Eleman ekleme sırasının bir önemi yoktur; koleksiyon her zaman sıralı yapısını korur. GetByIndex() metodu ile indeks numarasına göre, GetKey() ile de belirli bir indeksteki anahtara erişilebilir. SortedList, IDictionary arayüzünü uygular ve HashTable ile benzer metotlara sahiptir. Ancak, sıralama işlemi nedeniyle ekleme ve silme işlemleri, sıralanmamış koleksiyonlara göre biraz daha fazla işlem gücü gerektirebilir. Güncelleme işlemleri köşeli parantez kullanılarak kolayca yapılabilir.