Condividi tramite


Tipi di insieme 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 si distinguono da queste perché mantengono i rispettivi elementi ordinati per chiave e non presentano la caratteristica di inserimento e recupero basata su O(1) delle tabelle hash. Le tre classi hanno diverse funzionalità comuni:

Nella seguente tabella sono riportate le 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 sono indicizzate, in modo da rendere efficiente il recupero indicizzato.

Il recupero indicizzato non è supportato.

Il recupero è basato su O(log n).

Il recupero è basato su O(log n).

L'inserimento e la rimozione sono in genere basati su O(n). Tuttavia, per i dati già ordinati l'inserimento è basato su O(1), in modo che ciascun elemento venga aggiunto alla fine dell'elenco. Questo presuppone che non sia necessario un ridimensionamento.

L'inserimento e la rimozione sono basati su O(log n).

Viene utilizzata una minore quantità di memoria rispetto alla classe SortedDictionary<TKey, TValue>.

Viene utilizzata una maggiore quantità di memoria rispetto alla classe non generica SortedList e alla classe generica SortedList<TKey, TValue>.

Per dizionari o elenchi ordinati che devono essere accessibili contemporaneamente da più thread, è possibile aggiungere logica di ordinamento a una classe derivata da ConcurrentDictionary<TKey, TValue>.

NotaNota

Per i valori che contengono le rispettive chiavi, ad esempio i record dei dipendenti contenenti un ID dipendente, è possibile creare un insieme con chiavi che presenti alcune caratteristiche di un elenco e altre di un dizionario mediante la derivazione dalla classe generica KeyedCollection<TKey, TItem>.

A partire da .NET Framework versione 4, la classe SortedSet<T> fornisce una struttura ad albero auto-bilanciata che mantiene i dati ordinati dopo operazioni di inserimento, eliminazione e ricerca. Questa classe e la classe HashSet<T> implementano l'interfaccia ISet<T>.

Vedere anche

Riferimenti

System.Collections.IDictionary

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

ConcurrentDictionary<TKey, TValue>

Concetti

Tipi di insieme comunemente utilizzati