Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
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:
Tutte e tre le classi implementano l'interfaccia System.Collections.IDictionary . Le due classi generiche implementano anche l'interfaccia System.Collections.Generic.IDictionary<TKey,TValue> generica.
Ogni elemento è una coppia chiave/valore a scopo di enumerazione.
Annotazioni
La classe non generica SortedList restituisce DictionaryEntry oggetti quando vengono enumerati, anche se i due tipi generici restituiscono KeyValuePair<TKey,TValue> oggetti .
Gli elementi vengono ordinati in base a un'implementazione System.Collections.IComparer (per non generica SortedList) o a un'implementazione System.Collections.Generic.IComparer<T> (per le due classi generiche).
Ogni classe fornisce proprietà che restituiscono raccolte contenenti solo le chiavi o solo i valori.
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> .