Condividi tramite


Tipi di raccolta ordinati

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

Nella tabella seguente sono elencate alcune delle differenze tra le due classi di elenco ordinate e la SortedDictionary<TKey,TValue> classe .

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

Per gli elenchi o i dizionari ordinati che devono essere accessibili simultaneamente da più thread, è possibile aggiungere la logica di ordinamento a 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>.

Annotazioni

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

A partire da .NET Framework 4, la SortedSet<T> classe fornisce un albero di bilanciamento automatico che gestisce i dati in ordine ordinato dopo inserimenti, eliminazioni e ricerche. Questa classe e la HashSet<T> classe implementano l'interfaccia ISet<T> .

Vedere anche