c# generics dictionary sortedlist sorteddictionary

c# - SortedList<>, SortedDictionary<> y Dictionary<>



generics (4)

  1. Al iterar sobre los elementos en cualquiera de los dos, los elementos serán ordenados. No es así con Dictionary<T,V> .

  2. MSDN aborda la diferencia entre SortedList<T,V> y SortedDictionary<T,V> :

La clase genérica SortedDictionary (TKey, TValue) es un árbol de búsqueda binaria con recuperación O (log n), donde n es el número de elementos en el diccionario. A este respecto, es similar a la clase genérica SortedList (TKey, TValue). Las dos clases tienen modelos de objetos similares, y ambos tienen recuperación O (log n). Donde las dos clases difieren es en el uso de la memoria y la velocidad de inserción y eliminación:

SortedList (TKey, TValue) utiliza menos memoria que SortedDictionary (TKey, TValue).

SortedDictionary (TKey, TValue) tiene operaciones de inserción y eliminación más rápidas para datos sin clasificar: O (log n) en oposición a O (n) para SortedList (TKey, TValue).

Si la lista se completa de una sola vez a partir de datos ordenados, SortedList (TKey, TValue) es más rápido que SortedDictionary (TKey, TValue).

Encuentro que SortedList<TKey, TValue> SortedDictionary<TKey, TValue> y Dictionary<TKey, TValue> implementan las mismas interfaces.

  1. ¿Cuándo deberíamos optar por SortedList y SortedDictionary over Dictionary ?
  2. ¿Cuál es la diferencia entre SortedList y SortedDictionary en términos de aplicación?

  1. Cuando desee que la colección se ordene por clave cuando itere sobre ella. Si no necesita ordenar sus datos, estará mejor con solo un diccionario, tendrá un mejor rendimiento.

  2. SortedList y SortedDictionary hacen prácticamente lo mismo, pero se implementan de manera diferente, por lo que se explican las fortalezas y debilidades diferentes aquí .


Para resumir los resultados de una prueba de rendimiento - SortedList vs. SortedDictionary vs. Dictionary vs. Hashtable , los resultados de mejor a peor para diferentes escenarios:

Uso de memoria:

SortedList<T,T> Hashtable SortedDictionary<T,T> Dictionary<T,T>

Inserciones:

Dictionary<T,T> Hashtable SortedDictionary<T,T> SortedList<T,T>

Operaciones de búsqueda:

Hashtable Dictionary<T,T> SortedList<T,T> SortedDictionary<T,T>

operaciones de bucle foreach

SortedList<T,T> Dictionary<T,T> Hashtable SortedDictionary<T,T>