2011-01-07 6 views
8

Solo quería preguntar cuál es la necesidad de tres diccionarios diferentes: OrderedDictionary, ListDictionary y HybridDictionary cuando todos ellos realizan funciones similares. Ninguno de ellos está ordenado, los elementos de la colección se pueden recuperar por clave en todos ellos. Entonces, ¿cuál es el propósito de tres clases diferentes?Necesidad de OrderedDictionary, ListDictionary e HybridDictionary

Gracias

Respuesta

11

En pocas palabras:

  • Dictionary - Bueno, un diccionario.

  • ListDictionary - Se utiliza para pequeñas colecciones, por lo general menos de 10 artículos

  • HybridDictionary - Se utiliza cuando el tamaño de la colección es desconocida (interruptores implementaciones dependiendo del tamaño de la colección)

  • OrderedDictionary - El los elementos de un ordenadoDiccionario no están ordenados por la clave, a diferencia de los elementos de una clase SortedDictionary<TKey, TValue>. Puede acceder a los elementos ya sea por la clave o por el índice.

+2

Es un buen artículo ... pero ¿cuál es la necesidad de OrderedDictionary? me preocupa? – Batrickparry

+1

@Novice - Lo siento, lo olvidé - agregando más información ahora. –

+0

Supongo que las claves están ordenadas. –

6

Para complementar la respuesta de Kyle:

OrderedDictionary permite la recuperación de clave y el índice (que utiliza una tabla hash y y la matriz interna), pero tiene una cabeza grande por artículo

ListDictionary tiene una lista enlazada como su estructura interna, no funciona bien para la inserción y recuperación por clave, pero conserva el orden de inserción original

HybridDictionary es un ListDictionary si el diccionario no contiene muchos elementos y se convierte en un Hashta ble si el número de elementos alcanza un límite específico (Personalmente creo que debería usar Dictionary <,> en lugar de hacerlo desde C# 2)

+0

Para no olvidar la principal diferencia entre 'ListDictionary' y' OrderedDictionary', el anterior no conserva el orden, mientras que el segundo sí lo hace. La denominación de 'ListDictionary' es poco confusa (y no es necesaria en mi opinión cuando tienes una versión híbrida). – nawfal

Cuestiones relacionadas