Freigeben über


Sortierte Auflistungstypen

Die System.Collections.SortedList-Klasse, die generische System.Collections.Generic.SortedList<TKey, TValue>-Klasse und die generische System.Collections.Generic.SortedDictionary<TKey, TValue>-Klasse sind insofern mit der Hashtable-Klasse und der generischen Dictionary<TKey, TValue>-Klasse vergleichbar, als sie die IDictionary-Schnittstelle implementieren. Sie behalten jedoch ihre Elemente in der Sortierreihenfolge nach Schlüssel bei und verfügen nicht über die O(1)-Einfüge- und -Abrufmerkmale von Hashtabellen. Die drei Klassen verfügen über mehrere gemeinsame Features:

In der folgenden Tabelle sind einige Unterschiede zwischen den beiden SortedList-Klassen und der SortedDictionary<TKey, TValue>-Klasse aufgelistet.

Nicht generische SortedList-Klasse und generische SortedList<TKey, TValue>-Klasse

Generische SortedDictionary<TKey, TValue>-Klasse

Da die Eigenschaften zum Zurückgeben von Schlüsseln und Werten indiziert sind, ist ein effizienter indizierter Abruf möglich.

Kein indizierter Abruf.

O(log n)-Abruf.

O(log n)-Abruf.

Einfüge- und Abrufvorgänge erfolgen generell nach O(n); bei Daten, die sich bereits in der richtigen Sortierreihenfolge befinden, wird jedoch nach O(1) eingefügt, sodass jedes Element am Ende der Liste hinzugefügt wird. (Dabei wird davon ausgegangen, dass keine Größenanpassung erforderlich ist.)

O(log n)-Einfüge- und -Abrufvorgänge.

Benötigt weniger Arbeitsspeicher als SortedDictionary<TKey, TValue>.

Benötigt mehr Arbeitsspeicher als die nicht generische SortedList-Klasse und die generische SortedList<TKey, TValue>-Klasse.

In sortierten Listen oder Wörterbüchern, auf die von mehreren Threads gleichzeitig zugegriffen werden muss, können Sie einer Klasse, die von ConcurrentDictionary<TKey, TValue> abgeleitet wird, eine Sortierlogik hinzufügen.

HinweisHinweis

Bei Werten, die eigene Schlüssel enthalten (z. B. Mitarbeiterdatensätze mit einer Mitarbeiter-ID), können Sie durch Ableitung von der generischen KeyedCollection<TKey, TItem>-Klasse eine verschlüsselte Auflistung erstellen, die einige Merkmale einer Liste und einige Merkmale eines Wörterbuchs aufweist.

Ab .NET Framework, Version 4 stellt die SortedSet<T>-Klasse eine selbstausgleichende Struktur bereit, die die Sortierung von Daten nach Einfüge-, Lösch- und Suchvorgängen beibehält. Diese Klasse und die HashSet<T>-Klasse implementieren die ISet<T>-Schnittstelle.

Siehe auch

Referenz

System.Collections.IDictionary

System.Collections.Generic.IDictionary<TKey, TValue>

ConcurrentDictionary<TKey, TValue>

Weitere Ressourcen

Häufig verwendete Auflistungstypen