Freigeben über


Sortierte Sammlungstypen

Die System.Collections.SortedList-Klasse, die generische System.Collections.Generic.SortedList<TKey,TValue>-Klasse sowie die generische System.Collections.Generic.SortedDictionary<TKey,TValue>-Klasse sind der Hashtable-Klasse und der generischen Dictionary<TKey,TValue>-Klasse in der Weise ähnlich, dass sie die IDictionary-Schnittstelle implementieren. Sie behalten jedoch ihre Elemente in der Reihenfolge nach Schlüssel bei, und sie verfügen nicht über die O(1)-Einfüge- und -Abrufeigenschaften von Hashtabellen. Die drei Klassen haben verschiedene Merkmale gemeinsam:

Die folgende Tabelle enthält einige Unterschiede zwischen den beiden SortedList-Klassen und der SortedDictionary<TKey,TValue>-Klasse.

Nicht generische SortedList-Klasse und generische SortedList<TKey,TValue>-Klasse Generische SortedDictionary<TKey,TValue>-Klasse
Die Eigenschaften, die Schlüssel und Werte zurückgeben, werden indiziert, um einen effizienten Abruf zu ermöglichen. Kein indizierter Abruf.
Der Abruf erfolgt über O(log n). Der Abruf erfolgt über O(log n).
Das Einfügen und Entfernen erfolgt im Allgemeinen über „O(n)“. Das Einfügen erfolgt jedoch über „O(log n)“ für Daten, die bereits in der Sortierreihenfolge vorliegen, sodass jedes Element am Ende der Liste hinzugefügt wird. (Dies setzt voraus, dass keine Größenänderung erforderlich ist.) Einfügen und Entfernen erfolgen über „O(log n)“.
Benötigt weniger Speicher als SortedDictionary<TKey,TValue>. Benötigt mehr Arbeitsspeicher als die nicht generische Klasse SortedList und die generische Klasse SortedList<TKey,TValue>.

Für sortierte Listen oder Wörterbücher, die gleichzeitig für mehrere Threads zugänglich sein müssen, können Sie einer Klasse Sortierlogik hinzufügen, die von ConcurrentDictionary<TKey,TValue> abgeleitet wird. Bei Berücksichtigung der Unveränderlichkeit folgen die folgenden entsprechenden unveränderlichen Typen einer ähnlichen Sortiersemantik: ImmutableSortedSet<T> und ImmutableSortedDictionary<TKey,TValue>.

Hinweis

Für Werte, die ihre eigenen Schlüssel enthalten (z.B. Mitarbeiterdatensätze mit einer Mitarbeiter-ID), können Sie durch Ableiten von der generischen Klasse KeyedCollection<TKey,TItem> eine schlüsselgebundene Sammlung erstellen, die einige Merkmale einer Liste und einige Merkmale eines Wörterbuchs aufweist.

Ab .NET Framework 4 stellt die Klasse SortedSet<T> eine selbstausgleichende Struktur bereit, in der Daten nach Einfüge-, Lösch- und Suchvorgängen in Sortierreihenfolge verwaltet werden. Diese Klasse sowie die HashSet<T>-Klasse implementieren die ISet<T>-Schnittstelle.

Siehe auch