Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
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:
Alla tre klasserna implementerar System.Collections.IDictionary gränssnittet. De två generiska klasserna implementerar också det System.Collections.Generic.IDictionary<TKey,TValue> generiska gränssnittet.
Varje element är ett nyckel/värde-par i uppräkningssyfte.
Anmärkning
Den icke-generiska SortedList klassen returnerar DictionaryEntry objekt när de räknas upp, även om de två generiska typerna returnerar KeyValuePair<TKey,TValue> objekt.
Element sorteras enligt en System.Collections.IComparer implementering (för icke-generiska SortedList) eller en System.Collections.Generic.IComparer<T> implementering (för de två generiska klasserna).
Varje klass innehåller egenskaper som returnerar samlingar som endast innehåller nycklarna eller bara värdena.
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. |
Sökning är O(log n). |
Sökning ä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>.
Anmärkning
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.