İnfografik
← Ünite 12
Nesne Tabanlı Programlama 1

Ünite 12: Koleksiyonlar 1

System.Collections İsim Uzayı
Tüm koleksiyon sınıflarının tanımlandığı ana kütüphanedir. Diziler System.Array'de yer alırken, koleksiyonlar bu isim uzayında yer alır.
ArrayList'in Dinamik Yapısı
ArrayList, dizi boyutunun çalışma anında değiştirilemediği klasik dizilerin aksine, eleman eklendikçe boyutunu otomatik olarak yönetir.
HashTable'da Benzersiz Anahtar
Bir HashTable içinde aynı anahtar değeri iki kez kullanılamaz. Bu, T.C. kimlik numarası gibi tekil verilerin anahtar yapılması için tasarlanmıştır.
SortedList Sıralama Mantığı
SortedList, ekleme sırasına bakmaksızın tüm elemanlarını anahtar değerine göre otomatik olarak sıralar. Bu sayede veriler her zaman düzenli tutulur.

Anahtar Kavramlar

BoxingDeğer türündeki verilerin object türüne dönüştürülerek koleksiyonlarda saklanması işlemidir. Örneğin, bir integer değerin ArrayList içine eklenmesi sırasında boxing gerçekleşir.
UnboxingKoleksiyonda object türünde saklanan verilerin tekrar kendi orijinal veri türüne dönüştürülmesi işlemidir. Boxing işleminin tersidir.
Anahtar-Değer Çifti (Key-Value Pair)HashTable ve SortedList gibi koleksiyonlarda, veriye ulaşmak için kullanılan benzersiz anahtar ve bu anahtara karşılık gelen değerin oluşturduğu yapıdır. Örneğin: 34 anahtarı, İstanbul değerini temsil eder.
IList ArayüzüKoleksiyon elemanlarına indeks numarası ile erişilmesine olanak tanıyan arayüzdür. ArrayList bu arayüzü uygular.
IDictionary ArayüzüAnahtar-değer çifti mantığı ile çalışan koleksiyonların (HashTable, SortedList) uyguladığı arayüzdür. Veriye anahtar üzerinden erişimi sağlar.
System.CollectionsC# dilinde tüm koleksiyon sınıflarının ve ilgili arayüzlerin içerisinde yer aldığı temel isim uzayıdır.
KoleksiyonAynı veya farklı türdeki verilerin gruplanarak saklanmasını ve yönetilmesini sağlayan, dizilere göre daha esnek ve gelişmiş sınıflardır.
Non Generic KoleksiyonVerileri object türü üzerinden saklayan ve tür güvenliği (type-safety) sağlamayan koleksiyon grubudur. ArrayList, HashTable ve SortedList bu gruba girer.
Hash KoduHashTable sınıfında verilerin bellek üzerinde hızlı bulunmasını sağlayan ve anahtar değerlerinden türetilen benzersiz tanımlayıcıdır.
İndeksBir koleksiyon içindeki elemanın konumunu belirten sayısal değerdir. ArrayList'te 0'dan başlar ve eleman sırasını temsil eder.

Diğer Önemli Bilgiler

Boxing ve Unboxing Maliyeti

Non generic koleksiyonlarda verilerin object türüne dönüştürülmesi (boxing) ve geri alınması (unboxing), performans üzerinde ek bir işlem yükü oluşturur.

IList ve IDictionary Farkı

IList arayüzü indeks tabanlı erişim sağlarken, IDictionary arayüzü anahtar tabanlı erişim sağlar. Bu, koleksiyonların temel çalışma mantığını belirler.

Sınavda Dikkat Et

  • Koleksiyonların dizilerden farklarını (boxing, boyut, isim uzayı) çok iyi öğrenin; sınavda karşılaştırmalı sorular sıkça çıkar.
  • ArrayList, HashTable ve SortedList sınıflarının uyguladığı arayüzleri (IList, IDictionary) mutlaka ezberleyin.
  • HashTable ve SortedList arasındaki en büyük farkın 'sıralama' olduğunu unutmayın; SortedList otomatik sıralar, HashTable sıralamaz.
  • Metotların hangi koleksiyona ait olduğunu karıştırmayın; özellikle ContainsKey ve ContainsValue arasındaki farka dikkat edin.
  • SortedList'te indeks ile erişim yapıldığında, elemanların anahtara göre sıralanmış halinin dikkate alınacağını unutmayın (0. indeks her zaman en küçük anahtardır).