Sıralanmış Koleksiyon Türleri
System.Collections.SortedList sınıfı, System.Collections.Generic.SortedList<TKey,TValue> genel sınıfı ve System.Collections.Generic.SortedDictionary<TKey,TValue> genel sınıfı, arabirimini uyguladığı IDictionary sınıfa ve Dictionary<TKey,TValue> genel sınıfa Hashtable benzer, ancak öğelerini anahtara göre sıralama düzeninde tutar ve karma tabloların O(1) ekleme ve alma özelliğine sahip değildir. Üç sınıfın birçok ortak özelliği vardır:
Üç sınıf da arabirimini System.Collections.IDictionary uygular. İki genel sınıf da genel arabirimi uygular System.Collections.Generic.IDictionary<TKey,TValue> .
Her öğe, numaralandırma amacıyla bir anahtar/değer çiftidir.
Not
İki genel tür nesneleri döndürse KeyValuePair<TKey,TValue> de, genel olmayan SortedList sınıf numaralandırıldığında nesneleri döndürürDictionaryEntry.
Öğeler bir System.Collections.IComparer uygulamaya (nongeneric SortedListiçin) veya bir System.Collections.Generic.IComparer<T> uygulamaya (iki genel sınıf için) göre sıralanır.
Her sınıf, yalnızca anahtarları veya yalnızca değerleri içeren koleksiyonlar döndüren özellikler sağlar.
Aşağıdaki tabloda, iki sıralanmış liste sınıfı ile SortedDictionary<TKey,TValue> sınıfı arasındaki bazı farklar listelenmiştir.
SortedList nongeneric sınıfı ve SortedList<TKey,TValue> genel sınıfı | SortedDictionary<TKey,TValue> generic sınıfı |
---|---|
Anahtarları ve değerleri döndüren özellikler dizine alınır ve verimli dizine alınan alma olanağı sağlar. | Dizine alınan alma yok. |
Alma işlemi O(günlük) değeridir n . |
Alma işlemi O(günlük) değeridir n . |
Ekleme ve kaldırma genellikle O(n ); ancak ekleme, zaten sıralama düzeninde olan veriler için O(günlük n ) olur, böylece her öğe listenin sonuna eklenir. (Bu, yeniden boyutlandırma gerekmediğini varsayar.) |
Ekleme ve kaldırma, O(günlük) olur n . |
bir değerinden daha SortedDictionary<TKey,TValue>az bellek kullanır. | Genel olmayan sınıftan ve genel sınıftan SortedListSortedList<TKey,TValue> daha fazla bellek kullanır. |
Birden çok iş parçacığından eşzamanlı olarak erişilebilir olması gereken sıralanmış listeler veya sözlükler için, sınıfından ConcurrentDictionary<TKey,TValue>türetilen bir sınıfa sıralama mantığı ekleyebilirsiniz. Değişmezlik göz önünde bulundurulduğunda, aşağıdaki karşılık gelen sabit türler benzer sıralama semantiği izler: ImmutableSortedSet<T> ve ImmutableSortedDictionary<TKey,TValue>.
Not
Kendi anahtarlarını içeren değerler için (örneğin, çalışan kimliği numarası içeren çalışan kayıtları), genel sınıftan türeterek KeyedCollection<TKey,TItem> bir listenin bazı özelliklerine ve sözlüğün bazı özelliklerine sahip anahtarlı bir koleksiyon oluşturabilirsiniz.
.NET Framework 4'den başlayarak, sınıfı ekleme, SortedSet<T> silme ve aramalardan sonra verileri sıralı düzende tutan bir kendi kendine dengeleyici ağaç sağlar. Bu sınıf ve HashSet<T> sınıfı arabirimini ISet<T> uygular.