Dela via


Sorterade samlingstyper

Klassen System.Collections.SortedList , den System.Collections.Generic.SortedList<TKey,TValue> generiska klassen och den System.Collections.Generic.SortedDictionary<TKey,TValue> generiska klassen liknar Hashtable klassen och den Dictionary<TKey,TValue> generiska klassen i det att de implementerar IDictionary gränssnittet, men de underhåller sina element i sorteringsordning efter nyckel, och de har inte infognings- och hämtningsegenskaperna för O(1) för hash-tabeller. De tre klasserna har flera funktioner gemensamt:

I följande tabell visas några av skillnaderna mellan de två sorterade listklasserna och SortedDictionary<TKey,TValue> klassen.

SortedList icke-generisk klass och SortedList<TKey,TValue> generisk klass SortedDictionary<TKey,TValue> generisk klass
Egenskaperna som returnerar nycklar och värden indexeras, vilket möjliggör effektiv indexerad hämtning. Ingen indexerad hämtning.
Hämtning är O(log n). Hämtning är O(log n).
Infogning och borttagning är vanligtvis O(n), men infogningen är O(log n) för data som redan är i sorteringsordning, så att varje element läggs till i slutet av listan. (Detta förutsätter att en storleksändring inte krävs.) Infogning och borttagning är O(log n).
Använder mindre minne än en SortedDictionary<TKey,TValue>. Använder mer minne än den SortedList icke-generiska klassen och den SortedList<TKey,TValue> generiska klassen.

För sorterade listor eller ordlistor som måste vara tillgängliga samtidigt från flera trådar kan du lägga till sorteringslogik i en klass som härleds från ConcurrentDictionary<TKey,TValue>. När du överväger oföränderlighet följer följande motsvarande oföränderliga typer liknande sorteringssemantik: ImmutableSortedSet<T> och ImmutableSortedDictionary<TKey,TValue>.

Kommentar

För värden som innehåller sina egna nycklar (till exempel medarbetarposter som innehåller ett nummer för medarbetar-ID) kan du skapa en nyckelsamling som har vissa egenskaper för en lista och vissa egenskaper för en ordlista genom att härleda från den KeyedCollection<TKey,TItem> generiska klassen.

Från och med .NET Framework 4 SortedSet<T> tillhandahåller klassen ett självbalanseringsträd som underhåller data i sorterad ordning efter infogningar, borttagningar och sökningar. Den här klassen och HashSet<T> klassen implementerar ISet<T> gränssnittet.

Se även