Types de collections triéesSorted Collection Types

La classe System.Collections.SortedList, la classe générique System.Collections.Generic.SortedList<TKey,TValue> et la classe générique System.Collections.Generic.SortedDictionary<TKey,TValue> sont similaires à la classe Hashtable et à la classe générique Dictionary<TKey,TValue>, car elles implémentent l’interface IDictionary, mais conservent leurs éléments triés par clé et ne possèdent pas les caractéristiques d’insertion ni de récupération O(1) des tables de hachage.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. Les trois classes ont plusieurs fonctionnalités en commun :The three classes have several features in common:

Le tableau suivant répertorie certaines des différences entre les deux classes de liste triée et la classe SortedDictionary<TKey,TValue>.The following table lists some of the differences between the two sorted list classes and the SortedDictionary<TKey,TValue> class.

SortedList (classe non générique) et SortedList<TKey,TValue> (classe générique)SortedList nongeneric class and SortedList<TKey,TValue> generic class SortedDictionary<TKey,TValue> (classe générique)SortedDictionary<TKey,TValue> generic class
Les propriétés qui retournent des clés et des valeurs sont indexées, ce qui permet une récupération indexée efficace.The properties that return keys and values are indexed, allowing efficient indexed retrieval. Aucune récupération indexée.No indexed retrieval.
La récupération est O(log n).Retrieval is O(log n). La récupération est O(log n).Retrieval is O(log n).
L’insertion et la suppression correspondent généralement à O(n). Toutefois, l’insertion correspond à O(log n) pour les données qui se trouvent déjà en ordre de tri, afin que chaque élément soit ajouté à la fin de la liste.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. (Cela suppose qu’un redimensionnement n’est pas requis.)(This assumes that a resize is not required.) L’insertion et la suppression sont O(log n).Insertion and removal are O(log n).
Utilise moins de mémoire qu’un SortedDictionary<TKey,TValue>.Uses less memory than a SortedDictionary<TKey,TValue>. Utilise plus de mémoire que la classe non générique SortedList et la classe générique SortedList<TKey,TValue>.Uses more memory than the SortedList nongeneric class and the SortedList<TKey,TValue> generic class.

Pour les listes ou les dictionnaires triés qui doivent être accessibles simultanément à partir de plusieurs threads, vous pouvez ajouter une logique de tri à une classe qui dérive de ConcurrentDictionary<TKey,TValue>.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>.

Notes

Pour les valeurs qui contiennent leurs propres clés (par exemple, des enregistrements d’employés qui contiennent un numéro d’ID de l’employé), vous pouvez créer une collection à clé qui possède certaines caractéristiques d’une liste et certaines caractéristiques d’un dictionnaire en dérivant de la classe générique KeyedCollection<TKey,TItem>.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.

À partir de .NET Framework 4, la classe SortedSet<T> fournit une arborescence autonome qui maintient les données triées dans un certain ordre après les insertions, les suppressions et les recherches.Starting with the .NET Framework 4, the SortedSet<T> class provides a self-balancing tree that maintains data in sorted order after insertions, deletions, and searches. Cette classe et la classe HashSet<T> implémentent l’interface ISet<T>.This class and the HashSet<T> class implement the ISet<T> interface.

Voir aussiSee also