CodeBlanks Logo Icon CodeBlanks

SortedList ve KeyedCollection

C# kursu · Orta seviye · Ders 86/116

SortedList ve KeyedCollection ile özel indeksli koleksiyonları öğrenirsin.

SortedList<K,V>

SortedList<K,V>, anahtarları sıralı tutan dizi tabanlı bir koleksiyondur. SortedDictionary<K,V> gibi sıralı gezer ama arka planda ağaç değil iki sıralı dizi kullanır.

Az elemanlı ve seyrek erişim gereken senaryolarda SortedList daha az bellek harcar. Ekleme O(n)'dir çünkü diziyi kaydırır. Çok sık ekleme yapılıyorsa SortedDictionary daha uygundur.

KeyedCollection<K,T>

KeyedCollection<K,T>, anahtarın ayrı bir alandan çıktığı sözlüktür. Her eleman kendi içinde bir anahtar taşır; sen ayrı anahtar değer vermezsin. GetKeyForItem yöntemini ezerek anahtarı çıkartırsın.

Örnek: bir Person sınıfında Id özelliği anahtardır. KeyedCollection<int, Person> türetirsin; GetKeyForItem(person) => person.Id yazarsın. people[5] deyimi Id'sı 5 olan kişiyi verir.

Uygulama SortedList ile sıralı yazdır

Aşağıdaki prices bir SortedList<string, int>'dir. foreach ile her anahtarı sıralı sırada Console.WriteLine ile yazdır.

Örnek çözümü göster
foreach ile kvp değişkenini gez, her adımda kvp.Key yazdır.
Örnek çözüm:
using System;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        var prices = new SortedList<string, int>();
        prices.Add("kiraz", 2);
        prices.Add("elma", 5);
        prices.Add("armut", 3);
        foreach (var kvp in prices)
        {
            Console.WriteLine(kvp.Key);
        }
    }
}

Kendini test et

  1. Koleksiyonu altyapısına eşle

    Dictionary<K,V>
    Hash tablo
    SortedDictionary<K,V>
    Ağaç tabanlı
    SortedList<K,V>
    Dizi tabanlı
  2. SortedList ne zaman avantajlı?

    • Az eleman ve seyrek erişimde
    • Çok sık eklemede
    • Sırasız gezinmede
    • Sonsuz dizilerde
    Cevabı göster

    Az eleman ve seyrek erişimde — Doğru. SortedList az elemanda az bellek harcar.

  3. KeyedCollection türet

    class People : KeyedCollection<____, Person>
    Cevabı göster
    class People : KeyedCollection<int, Person>

Orta seviye bölümündeki tüm dersler