Serdar YILMAZ / Software Developer
Bizimkisi Bir “Bug” Hikayesi...
Kocaeli/Körfez
Serdar Yılmaz C# – SortedList Sınıfı

C# – SortedList Sınıfı

dotnet

C# – Koleksiyonlar” başlıklı yazımızda koleksiyonların avantajlarından, dezavantajlarından bahsedip, genel bir bilgi vermiştik. Bu yazımızda ise bir koleksiyon sınıfı olan SortedList‘den bahsedeceğiz.

SortedList Sınıfının Temel Yapısı

Standart dizilere eklenen elemanlar, belleğe sıralı bir şekilde yerleştirilmektedir. Sıfırdan başlayarak her bir elemana birer indeks değeri verip, elemanlara o indeksler aracılığıyla erişe bilmekteydik.

SortedList koleksiyonunda ise Anahtar(Key) ve Değer(Value) olmak üzere iki kavram karşımıza çıkmakta. Konuyu daha anlaşılır kılmak açısından; standart dizilere eklediğimiz elemanları Değer, o elemanlara erişmek için kullandığımız indeksleri de Anahtar olarak düşünebilirsiniz.

Her bir Değerin farklı bir Anahtarı olmalıdır yani koleksiyon içerisinde yer alan Anahtarlar birbirinden farklı olmalıdır. Şimdi, başlangıç seviyesinde basit bir C# konsol uygulaması hazırlayarak SortedList Sınıfını incelemeye devam edelim.

Yukarıdaki örneğimizi açıklayacak olursak; Anahtar(Key) olarak plaka kodunu, Değer(Value) olarak da ilgili şehri tuttuğumuz bir koleksiyon oluşturduk. Keys özelliği ile koleksiyonumuzda yer alan tüm anahtarların listesini alıp, foreach döngüsüyle tüm Anahtar-Değer çiftlerini ekrana yazdırdık.

Öğeleri Sıralı Bir Şekilde Tutmakta

SortedList, Anahtarların değerlerine bağlı olarak Anahtar-Değer çiftlerini sıralı olarak saklayan bir koleksiyon oluşturmaktadır. Sıralama işlemini ikili arama ağacı kullanarak yapmaktadır. Yukarıdaki örneğimiz de Anahtar-Değer çiftleri ekrana, Anahtar(Key) değerlerine göre sıralı bir şekilde yazılacaktır.

  • • Anahtar: 25 – Değer: Erzurum
  • • Anahtar: 41 – Değer: Kocaeli
  • • Anahtar: 54 – Değer: Sakarya

Küçük Veri Kümeleri Üzerinde Daha Etkili

Değinilmesi gereken bir diğer hususta; SortedList küçük veri kümeleri üzerinde iyi bir performans sergilerken, yüksek boyutlardaki veri kümelerinde daha düşük performans sergilemektedir. Eğer büyük bir veri kümesine sahipseniz SortedList yerine Dictionary sınıfını kullanabilirsiniz. SortedList, Dictionary’den daha kötü bir arama performansına sahiptir.

Metotlar ve Özellikler

  1. Nesne Oluşturma
    SortedList sınıfından bir nesne oluşturuyoruz. Bu nesne, koleksiyondaki nesnelerin referanslarını tutacaktır. Ayrıca koleksiyon içerisinde tutulacak Anahtar ve Değerin veri tipini önceden biliyorsak tıpkı Dictionary sınıfında yapmış olduğumuz gibi bir nesne oluşturabiliriz.
  2. Add(Eklenecek_Anahtar, Eklenecek_Deger) Metodu
    Add() metodu ile koleksiyon içerisine Anahtar-Değer çiftlerini eklemekteyiz.
  3. ContainsKey(Aranan_Anahtar) Metodu
    Koleksiyon içerisinde, parametre olarak girilen değerde bir Anahtar (Key) mevcutsa TRUE  değilse FALSE döndürecektir.
  4. ContainsValue(Aranan_Deger) Metodu
    Koleksiyon içerisinde, parametre olarak girilen ifadede bir Değer(Value) mevcutsa TRUE  değilse FALSE döndürecektir.
  5. Clear() Metodu
    Koleksiyon içerisinde yer alan tüm Anahtar-Değer çiftlerini silmektedir.
  6. Remove(Anahtar) Metodu
    Koleksiyon içerisinde, parametre olarak girilen değerde bir Anahtar(Key) mevcutsa; Anahtarı ve anahtarla ilişkili Değeri silecektir.
  7. GetKeyList() Metodu ve Keys Özelliği
    Her ikisi de Anahtarları(Keys) içeren bir koleksiyon döndürmektedir.
  8. GetValueList() Metodu ve Values Özelliği 
    Her ikisi de Değerleri(Values) içeren bir koleksiyon döndürmektedir.
  9. Count Özelliği
    Koleksiyon içerisinde bulunan anahtar-değer çiftlerinin sayısını döndürmektedir.
  10. GetByIndex(indeks) ve  GetKey(indeks) Metotları
    SortedList’de Değerlere, Anahtar ile erişebildiğimiz gibi indeks ile de erişebiliriz. GetByIndex() Metodu parametre olarak girilen indeksteki Değeri döndürür. GetKey(indeks) metodu ise parametre olarak girilen indeksteki Anahtarı döndürür.
  11. IndexOfKey(Anahtar) ve IndexOfValue(Değer) Metotları
    IndexOfKey() metodu parametre olarak girilen Anahtarın indeksini döndürür. IndexOfValue() metodu ise parametre olarak girilen Değerin indeksini döndürür. Parametre olarak girilen Anahtar veya Değer koleksiyonda mevcut değilse -1 döndürürler.
  12. SetByIndex(i, val) Metodu
    i. indeksteki Değere “val” değişkeninin değerini atar.
  13. DictionaryEntry yapısı
    Hastable sınıfında olduğu gibi SortedList sınıfında da Anahtar-Değer çiftlerini bir DictionaryEntry yapısında tutabiliriz.

Serdar Yılmaz


Bu İçeriği Arkadaşlarınızla Paylaşmak İster misiniz?

3 Yorum

Bir Yorum Yapın