Tipi di raccolta ordinati

La classe System.Collections.SortedList e le classi generiche System.Collections.Generic.SortedList<TKey,TValue> e System.Collections.Generic.SortedDictionary<TKey,TValue> sono simili alla classe Hashtable e alla classe generica Dictionary<TKey,TValue> in quanto implementano l'interfaccia IDictionary, ma gestiscono l'ordinamento degli elementi in base alla chiave e non hanno la caratteristica di inserimento e recupero O(1) propria delle tabelle hash. Le tre classi hanno diverse funzionalità in comune:

La tabella seguente elenca alcune differenze tra le due classi SortedList e la classe SortedDictionary<TKey,TValue>.

Classe non generica SortedList e classe generica SortedList<TKey,TValue> Classe generica SortedDictionary<TKey,TValue>
Le proprietà che restituiscono chiavi e valori vengono indicizzate, consentendo un efficiente recupero indicizzato. Senza recupero indicizzato.
Il recupero è O(log n). Il recupero è O(log n).
L'inserimento e la rimozione sono in genere O(n); l'inserimento è tuttavia O(logn) per i dati già presenti nell'ordinamento, in modo che ogni elemento venga aggiunto alla fine dell'elenco. (Ciò presuppone che non sia necessario un ridimensionamento). L'inserimento e la rimozione sono O(log n).
Usa meno memoria di un SortedDictionary<TKey,TValue>. Usa più memoria della classe non generica SortedList e della classe generica SortedList<TKey,TValue>.

Per gli elenchi ordinati o i dizionari che devono essere accessibili contemporaneamente da più thread, è possibile aggiungere logica di ordinamento per una classe che deriva da ConcurrentDictionary<TKey,TValue>. Quando si considera l'immutabilità, i tipi non modificabili corrispondenti seguenti seguono una semantica di ordinamento simile: ImmutableSortedSet<T> e ImmutableSortedDictionary<TKey,TValue>.

Nota

Per i valori che contengono chiavi specifiche (ad esempio, record dei dipendenti che contengono un numero di ID dipendente) è possibile creare una raccolta con chiave che include alcune caratteristiche di un elenco e alcune caratteristiche di un dizionario mediante la derivazione dalla classe generica KeyedCollection<TKey,TItem>.

A partire da .NET Framework 4, la classe SortedSet<T> presenta una struttura ad albero auto-bilanciata che mantiene ordinati i dati dopo che sono stati inseriti, eliminati o cercati. Questa classe e la classe HashSet<T> implementano l'interfaccia ISet<T>.

Vedi anche