Esto puede parecer un duplicado de este question, que pregunta "¿Cuál es la diferencia entre SortedList y ?" Desafortunadamente, las respuestas no hacen más que citar la documentación de MSDN (que establece claramente que existen diferencias en el rendimiento y la memoria entre los dos), pero en realidad no responden la pregunta.Cuándo utilizar una SortedList <TKey, TValue> sobre SortedDictionary <TKey, TValue>?
De hecho (y por lo que esta cuestión no obtiene las mismas respuestas), de acuerdo con MSDN:
La clase genérica
SortedList<TKey, TValue>
es un árbol de búsqueda binaria con O (log n) de recuperación, donde n es el número de elementos en el diccionario. En esto, es similar a laSortedDictionary<TKey, TValue>
clase genérica . Las dos clases tienen modelos de objetos similares, y ambos tienen recuperación O (log n) . Cuando las dos clases difieren es en el uso de memoria y la velocidad de inserción y extracción:
SortedList<TKey, TValue>
utiliza menos memoria queSortedDictionary<TKey, TValue>
.
SortedDictionary<TKey, TValue>
tiene inserción más rápida y la eliminación operaciones de datos no ordenados, O (log n) en contraposición a O (n) paraSortedList<TKey, TValue>
.Si la lista se rellena todos a la vez de datos ordenados,
SortedList<TKey, TValue>
es más rápido queSortedDictionary<TKey, TValue>
.
Por lo tanto, claramente esto habría indicado que SortedList<TKey, TValue>
es la mejor opción a menos necesita más rápido insertar y extraer de las operaciones de datos no ordenados.
La pregunta aún permanece, dada la información anterior, ¿cuáles son las razones prácticas (caso real, business case, etc.) para usar un SortedDictionary<TKey, TValue>
? Según la información de rendimiento, implicaría que realmente no es necesario tener SortedDictionary<TKey, TValue>
en absoluto.
Tenga en cuenta que la sección se cita lo dice prácticamente todo. Sin embargo, tenga en cuenta que su afirmación sobre "operaciones más rápidas de inserción y eliminación de datos sin clasificar" no es del todo correcta. Lo que realmente está diciendo es que las operaciones de "insertar y quitar" siempre tienen una mayor complejidad de tiempo en una lista ordenada. La declaración sobre 'datos sin clasificar' solo se relaciona con la inicialización de estas estructuras con datos a través de sus constructores. – jerryjvl
Esto parece ser relevante en .NET 2.0. La implementación de SortedList parece haber cambiado de 3.0 en adelante. Hace poco, necesitaba una respuesta a esta pregunta y descubrí que esta pregunta y sus respuestas ya no son relevantes para los usuarios de .NET 4.5. –
Jeremy