Compartir vía


Tipos de colecciones ordenadas

La clase System.Collections.SortedList, la clase genérica System.Collections.Generic.SortedList<TKey,TValue> y la clase genérica System.Collections.Generic.SortedDictionary<TKey,TValue> son similares a la clase Hashtable y a la clase genérica Dictionary<TKey,TValue> en que implementan la interfaz IDictionary, pero mantienen sus elementos en el criterio de ordenación mediante la clave, y no tienen la inserción O(1) y la característica de recuperación de las tablas hash. Las tres clases tienen varias características en común:

En la tabla siguiente se enumeran algunas de las diferencias entre las dos clases de lista ordenada y la clase SortedDictionary<TKey,TValue>.

Clase no genérica SortedList y clase genérica SortedList<TKey,TValue> Clase genérica SortedDictionary<TKey,TValue>
Las propiedades que devuelven claves y valores se indizan, lo que permite una recuperación indizada eficaz. Sin recuperación indizada.
La recuperación es O(log n). La recuperación es O(log n).
La inserción y eliminación son generalmente O(n); pero la inserción es O(log n) para los datos que ya están en el criterio de ordenación, de manera que cada elemento se agrega al final de la lista. (Se supone que no es necesario cambiar de tamaño). La inserción y eliminación son O(log n).
Usa menos memoria que SortedDictionary<TKey,TValue>. Usa más memoria que la clase no genérica SortedList y la clase genérica SortedList<TKey,TValue>.

Para listas ordenadas o diccionarios que deben ser accesibles simultáneamente desde varios subprocesos, se puede agregar una lógica de ordenación a una clase que deriva de ConcurrentDictionary<TKey,TValue>. Al considerar la inmutabilidad, los siguientes tipos inmutables correspondientes siguen una semántica de ordenación similar: ImmutableSortedSet<T> y ImmutableSortedDictionary<TKey,TValue>.

Nota

Para los valores que contienen sus propias claves (por ejemplo, registros de empleados que contienen un número de id. de empleado), puede derivar de la clase genérica KeyedCollection<TKey,TItem> para crear una colección con clave que tenga algunas características de lista y algunas características de diccionario.

A partir de .NET Framework 4, la clase SortedSet<T> proporciona un árbol de equilibrio automático que mantiene los datos ordenados después de las operaciones de inserción, eliminación y búsqueda. Esta clase y la clase HashSet<T> implementan la interfaz ISet<T>.

Vea también