Tipos de las colecciones SortedList y SortedDictionary
Actualización: noviembre 2007
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> se parecen a la clase Hashtable y a la clase genérica Dictionary<TKey, TValue> en que implementan la interfaz IDictionary, pero mantienen sus elementos ordenados por clave y no disponen de las características de inserción y recuperación O(1) de las tablas hash. Estas tres clases tienen varias características en común:
Las tres implementan la interfaz System.Collections.IDictionary. Las dos clases genéricas también implementan la interfaz genérica System.Collections.Generic.IDictionary<TKey, TValue>.
Cada elemento es un par de clave y valor para propósitos de enumeración.
Nota: La clase SortedList no genérica devuelve objetos DictionaryEntry cuando se enumera, mientras los dos tipos genéricos devuelven objetos KeyValuePair<TKey, TValue>.
Los elementos se ordenan conforme a una implementación de System.Collections.IComparer (para la clase SortedList no genérica) o una implementación de System.Collections.Generic.IComparer<T> (para las dos clases genéricas).
Cada clase proporciona propiedades que devuelven colecciones que sólo contienen las claves o los valores.
En la siguiente tabla se muestran algunas de las diferencias que existen entre las dos clases de lista ordenada y la clase SortedDictionary<TKey, TValue>.
Clase SortedList no genérica 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). |
Normalmente, la inserción y la eliminación son O(n); sin embargo, la inserción es O(1) para los datos que ya están ordenados, de modo que cada elemento se agrega al final de la lista. (Esto significa que no se requiere un cambio de tamaño.) |
La inserción y la eliminación son O(log n). |
Utiliza menos memoria que SortedDictionary<TKey, TValue>. |
Utiliza más memoria que la clase SortedList no genérica y que la clase genérica SortedList<TKey, TValue>. |
Nota: |
---|
En el caso de los valores que contienen sus propias claves (por ejemplo, registros de empleados que contienen un número de identificación de empleado), puede crear una colección con clave que tenga algunas de las características de una lista y algunas de las características de un diccionario; para ello, tiene que realizar derivaciones de la clase genérica KeyedCollection<TKey, TItem>. |
Vea también
Referencia
System.Collections.Generic.SortedList<TKey, TValue>
System.Collections.IDictionary
System.Collections.Generic.IDictionary<TKey, TValue>