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šechny tři třídy implementují rozhraní System.Collections.IDictionary. Dané dvě obecné třídy také implementují obecné rozhraní System.Collections.Generic.IDictionary<TKey, TValue>.
Každý prvek je pár klíče a hodnoty pro účely výčtu.
Poznámka
Neobecná třída SortedList vrací při výčtu objekty DictionaryEntry, ačkoliv dané dva obecné typy vracejí objekty KeyValuePair<TKey, TValue>.
Prvky jsou řazeny podle implementace System.Collections.IComparer (pro neobecný SortedList) nebo podle implementace System.Collections.Generic.IComparer<T> (pro dané dvě obecné třídy).
Každá třída obsahuje vlastnosti, které vracejí kolekce obsahující pouze hodnoty klíčů nebo hodnoty.
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>.
![]() |
---|
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>