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í:
Všechny tři třídy implementují System.Collections.IDictionary rozhraní. Dvě obecné třídy také implementují System.Collections.Generic.IDictionary<TKey,TValue> obecné rozhraní.
Každý prvek je pár klíč/hodnota pro účely výčtu.
Poznámka:
Negenerická SortedList třída vrací DictionaryEntry objekty při výčtu, i když dva obecné typy vracejí KeyValuePair<TKey,TValue> objekty.
Prvky jsou seřazeny podle System.Collections.IComparer implementace (pro negenerické SortedList) nebo System.Collections.Generic.IComparer<T> implementace (pro dvě obecné třídy).
Každá třída poskytuje vlastnosti, které vracejí kolekce obsahující pouze klíče nebo pouze hodnoty.
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í.