Sortierte SammlungstypenSorted Collection Types

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.The System.Collections.SortedList class, the System.Collections.Generic.SortedList<TKey,TValue> generic class, and the System.Collections.Generic.SortedDictionary<TKey,TValue> generic class are similar to the Hashtable class and the Dictionary<TKey,TValue> generic class in that they implement the IDictionary interface, but they maintain their elements in sort order by key, and they do not have the O(1) insertion and retrieval characteristic of hash tables. Die drei Klassen haben verschiedene Merkmale gemeinsam:The three classes have several features in common:

Die folgende Tabelle enthält einige Unterschiede zwischen den beiden SortedList-Klassen und der SortedDictionary<TKey,TValue>-Klasse.The following table lists some of the differences between the two sorted list classes and the SortedDictionary<TKey,TValue> class.

Nicht generische SortedList-Klasse und generische SortedList<TKey,TValue>-KlasseSortedList nongeneric class and SortedList<TKey,TValue> generic class Generische SortedDictionary<TKey,TValue>-KlasseSortedDictionary<TKey,TValue> generic class
Die Eigenschaften, die Schlüssel und Werte zurückgeben, werden indiziert, um einen effizienten Abruf zu ermöglichen.The properties that return keys and values are indexed, allowing efficient indexed retrieval. Kein indizierter Abruf.No indexed retrieval.
Der Abruf erfolgt über O(log n).Retrieval is O(log n). Der Abruf erfolgt über O(log n).Retrieval is 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.Insertion and removal are generally O(n); however, insertion is O(log n) for data that are already in sort order, so that each element is added to the end of the list. (Dies setzt voraus, dass keine Größenänderung erforderlich ist.)(This assumes that a resize is not required.) Einfügen und Entfernen erfolgen über „O(log n)“.Insertion and removal are O(log n).
Benötigt weniger Speicher als SortedDictionary<TKey,TValue>.Uses less memory than a SortedDictionary<TKey,TValue>. Benötigt mehr Arbeitsspeicher als die nicht generische Klasse SortedList und die generische Klasse SortedList<TKey,TValue>.Uses more memory than the SortedList nongeneric class and the SortedList<TKey,TValue> generic class.

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.For sorted lists or dictionaries that must be accessible concurrently from multiple threads, you can add sorting logic to a class that derives from ConcurrentDictionary<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.For values that contain their own keys (for example, employee records that contain an employee ID number), you can create a keyed collection that has some characteristics of a list and some characteristics of a dictionary by deriving from the KeyedCollection<TKey,TItem> generic class.

Ab .NET Framework 4.NET Framework 4 stellt die Klasse SortedSet<T> eine selbstausgleichende Struktur bereit, in der Daten nach Einfüge-, Lösch- und Suchvorgängen in sortierter Reihenfolge verwaltet werden.Starting with the .NET Framework 4.NET Framework 4, the SortedSet<T> class provides a self-balancing tree that maintains data in sorted order after insertions, deletions, and searches. Diese Klasse sowie die HashSet<T>-Klasse implementieren die ISet<T>-Schnittstelle.This class and the HashSet<T> class implement the ISet<T> interface.

Siehe auchSee Also

System.Collections.IDictionary
System.Collections.Generic.IDictionary<TKey,TValue>
ConcurrentDictionary<TKey,TValue>
Häufig verwendete AuflistungstypenCommonly Used Collection Types