SortedList ve KeyedCollection
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
-
Koleksiyonu altyapısına eşle
- Dictionary<K,V>
- Hash tablo
- SortedDictionary<K,V>
- Ağaç tabanlı
- SortedList<K,V>
- Dizi tabanlı
-
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.
-
KeyedCollection türet
class People : KeyedCollection<____, Person>Cevabı göster
class People : KeyedCollection<int, Person>