Typy řazených kolekcí

Třída System.Collections.SortedList , System.Collections.Generic.SortedList<TKey,TValue> obecná třída a System.Collections.Generic.SortedDictionary<TKey,TValue> obecná třída jsou podobné Hashtable třídě a Dictionary<TKey,TValue> obecné třídě v tom, že implementují IDictionary rozhraní, ale udržují své prvky v pořadí řazení podle klíče a nemají vložené a načítané vlastnosti hash tabulek. Tři třídy mají několik společných funkcí:

Následující tabulka uvádí některé rozdíly mezi dvěma třídami seřazených seznamů a SortedDictionary<TKey,TValue> třídou.

SortedList nongeneric – třída a SortedList<TKey,TValue> obecná třída SortedDictionary<TKey,TValue> obecná třída
Vlastnosti, které vracejí klíče a hodnoty, jsou indexovány, což umožňuje efektivní indexované načítání. Žádné indexované načtení.
Načtení je O(log n). Načtení je O(log n).
Vložení a odebrání jsou obecně O(n); vložení je však O(log n) pro data, která jsou již v pořadí řazení, takže každý prvek se přidá na konec seznamu. (Předpokládá se, že změna velikosti není nutná.) Vložení a odebrání jsou O(log n).
Používá méně paměti než .SortedDictionary<TKey,TValue> Používá více paměti než SortedList negenerická třída a SortedList<TKey,TValue> obecná třída.

Pro seřazené seznamy nebo slovníky, které musí být přístupné souběžně z více vláken, můžete přidat logiku řazení do třídy odvozené od ConcurrentDictionary<TKey,TValue>. Při zvažování neměnnosti následují následující neměnné typy podobné sémantiky řazení: ImmutableSortedSet<T> a ImmutableSortedDictionary<TKey,TValue>.

Poznámka:

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

Počínaje rozhraním .NET Framework 4 poskytuje třída strom automatického vyrovnávání, SortedSet<T> který udržuje data v seřazených pořadí po vložení, odstranění a hledání. Tato třída a HashSet<T> třída implementují ISet<T> rozhraní.

Viz také