2009-09-15 22 views
65

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

  1. Cuándo debemos optar por SortedList y SortedDictionary sobre Dictionary?
  2. ¿Cuál es la diferencia entre SortedList y SortedDictionary en términos de aplicación?
+0

Ver http://stackoverflow.com/questions/935621/whats-the-difference-between-sortedlist-and -sorteddictionary – nawfal

Respuesta

71
  1. Cuando iterar sobre los elementos en cualquiera de los dos, se ordenan los elementos. No es así con Dictionary<T,V>.

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

El SortedDictionary (TKey, TValue) clase genérica es un binary search tree con O (log n) de recuperació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). Cuando las dos clases difieren es en uso de la memoria y la velocidad de inserción y extracción:

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

SortedDictionary (TKey, TValue) tiene la inserción más rápida y la eliminación operaciones de datos no ordenados: O (log n) en contraposición a O (n) para SortedList (TKey, TValue).

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

+8

Otra diferencia práctica, que en 'SortedList' puede recuperar por índice (en lugar de recuperación por clave) y en 'SortedDictionary' no puede. –

8
  1. Cuando se desea que la colección sea ordenadas según la tecla cuando iterar sobre ella. Si no necesita ordenar sus datos, estará mejor con solo un diccionario, tendrá un mejor rendimiento.

  2. SortedList y SortedDictionary hacen más o menos lo mismo, pero se implementan de manera diferente, por lo tanto tienen diferentes puntos fuertes y débiles explained here.

10

para resumir los resultados de un Performance Test - SortedList vs. SortedDictionary vs. Dictionary vs. Hashtable, los resultados de mejor a peor para los diferentes escenarios: Uso

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> 
Cuestiones relacionadas