Freigeben über


Sortierte Sammlungstypen

Die System.Collections.SortedList Klasse, die System.Collections.Generic.SortedList<TKey,TValue> generische Klasse und die System.Collections.Generic.SortedDictionary<TKey,TValue> generische Klasse ähneln der Hashtable Klasse und der Dictionary<TKey,TValue> generischen Klasse dadurch, dass sie die IDictionary Schnittstelle implementieren, wobei sie ihre Elemente nach Schlüssel sortiert halten und nicht über die O(1)-Einfüge- und Abrufeigenschaft von Hashtabellen verfügen. Die drei Klassen verfügen über mehrere gemeinsame Features:

In der folgenden Tabelle sind einige der Unterschiede zwischen den beiden sortierten Listenklassen und der SortedDictionary<TKey,TValue> Klasse aufgeführt.

SortedList nichtgenerische Klasse und SortedList<TKey,TValue> generische Klasse SortedDictionary<TKey,TValue> generische Klasse
Die Eigenschaften, die Schlüssel und Werte zurückgeben, werden indiziert und ermöglichen einen effizienten indizierten Abruf. Kein indizierter Abruf.
Der Abruf erfolgt über O(log n). Der Abruf erfolgt über O(log n).
Das Einfügen und Entfernen sind im Allgemeinen O(n); das Einfügen ist jedoch O(log n) für Daten, die bereits sortiert sind, damit jedes Element am Ende der Liste hinzugefügt wird. (Dabei wird davon ausgegangen, dass eine Größenänderung nicht erforderlich ist.) Einfügen und Entfernen erfolgen über „O(log n)“.
Verwendet weniger Arbeitsspeicher als ein SortedDictionary<TKey,TValue>. Verwendet mehr Arbeitsspeicher als die SortedList nichtgenerische Klasse und die SortedList<TKey,TValue> generische Klasse.

Bei sortierten Listen oder Wörterbüchern, auf die gleichzeitig über mehrere Threads zugegriffen werden muss, können Sie einer Klasse, von ConcurrentDictionary<TKey,TValue>der abgeleitet wird, Sortierlogik hinzufügen. Bei Berücksichtigung der Unveränderlichkeit folgen die folgenden entsprechenden unveränderlichen Typen ähnlichen Sortiersemantik: ImmutableSortedSet<T> und ImmutableSortedDictionary<TKey,TValue>.

Hinweis

Für Werte, die ihre eigenen Schlüssel enthalten (z. B. Mitarbeiterdatensätze, die eine Mitarbeiter-ID-Nummer enthalten), können Sie eine Schlüsselauflistung erstellen, die einige Merkmale einer Liste und einige Merkmale eines Wörterbuchs enthält, indem Sie von der KeyedCollection<TKey,TItem> generischen Klasse abgeleitet werden.

Ab .NET Framework 4 stellt die SortedSet<T> Klasse eine Selbstausgleichsstruktur bereit, die Daten nach Einfügungen, Löschungen und Suchvorgängen in sortierter Reihenfolge verwaltet. Diese Klasse und die HashSet<T> Klasse implementieren die ISet<T> Schnittstelle.

Siehe auch