Sdílet prostřednictvím


Seřazené typy kolekcí

Třída System.Collections.SortedList, obecná třída System.Collections.Generic.SortedList<TKey, TValue> a obecná třída System.Collections.Generic.SortedDictionary<TKey, TValue> jsou podobné jako třída Hashtable a obecná třída Dictionary<TKey, TValue> v tom, že implementují rozhraní IDictionary, ale zachovávají prvky v setříděném pořadí dle klíče a složitost vkládání a načítání není O(1), která je charakteristická pro tabulky hodnot hash. Tyto tři třídy mají několik společných funkcí:

V následující tabulce jsou uvedeny některé rozdíly mezi dvěma třídami seřazeného seznam a třídou SortedDictionary<TKey, TValue>.

Neobecná třída SortedList a obecná třída SortedList<TKey, TValue>

Obecná třída SortedDictionary<TKey, TValue>

Vlastnosti, které vracejí klíče a hodnoty, jsou indexovány pro umožnění efektivního indexovaného načítání.

Neindexované načítání.

Načítání má složitost O(log n).

Načítání má složitost O(log n).

Vložení a odebrání mají obecně složitost O(n). Vložení má však složitost O(1) pro data, které jsou již seřazena, takže každý prvek je přidán na konec seznamu. (Předpokládá se, že není požadována změna velikosti.)

Vložení a odebrání mají složitost O(log n).

Vyžaduje méně paměti než SortedDictionary<TKey, TValue>.

Vyžaduje více paměti než neobecná třída SortedList a obecná třída SortedList<TKey, TValue>.

Chcete-li vytvořit seřazené seznamy nebo slovníky, které musí být přístupné z více vláken současně, můžete přidat logiku řazení do třídy, která je odvozena z ConcurrentDictionary<TKey, TValue>.

PoznámkaPoznámka

Pro hodnoty, které obsahují vlastní klíče (například záznamy zaměstnanců, které obsahují identifikační číslo zaměstnance), můžete vytvořit kolekci s klíčem, která má některé vlastnosti seznamu a některé vlastnosti slovníku, pomocí odvození třídy z obecné třídy KeyedCollection<TKey, TItem>.

Počínaje .NET Framework verze 4 třída SortedSet<T> poskytuje samo-vyvažovací strom, který po vložení, odstranění a vyhledávání udržuje data v seřazeném pořadí. Tato třída a třída HashSet<T> implementují rozhraní ISet<T>.

Viz také

Odkaz

System.Collections.IDictionary

System.Collections.Generic.IDictionary<TKey, TValue>

ConcurrentDictionary<TKey, TValue>

Koncepty

Běžně používané typy kolekce