Pregunta

A menudo uso Dictionary en C # 2.0 con la primera clave como cadena que contenía un identificador único.

Estoy aprendiendo C # 3.0 + y parece que ahora puedo simplemente usar una Lista y simplemente hacer LINQ en ese objeto para obtener el objeto específico (con .where ()).

Entonces, si entiendo bien, ¿la clase de Diccionario ha perdido su propósito?

¿Fue útil?

Solución

no, un diccionario es aún más eficiente para recuperar las cosas con una clave.

una lista que todavía tiene que recorrer en iteración para encontrar lo que desea. Un diccionario hace una búsqueda.

Otros consejos

Si solo tiene una Lista, al hacer una selección de LINQ se escaneará cada elemento de la lista comparándolo con el que está buscando.

Sin embargo, el Diccionario calcula un código hash de la cadena que está buscando (devuelto por el método GetHashCode). Este valor se utiliza para buscar la cadena de manera más eficiente. Para obtener más información sobre cómo funciona, consulte Wikipedia .

Si tiene más de unas pocas cadenas, el método inicial (Lista) comenzará a ser muy lento.

En mi humilde opinión, el enfoque del Diccionario será MUCHO más rápido que LINQ, por lo que si tiene una matriz con muchos elementos, debería usar el Diccionario.

El diccionario se implementa como una tabla hash. Por lo tanto, debe proporcionar acceso de tiempo constante para las búsquedas. La lista se implementa como una matriz dinámica, lo que le brinda acceso de tiempo lineal.

Basado en las estructuras de datos subyacentes, el Diccionario aún debería brindarle un mejor rendimiento.

Documentos de MSDN en el diccionario

http://msdn.microsoft.com/en-us/library /xfhwa508.aspx

y lista

http://msdn.microsoft.com/en-us/library /6sh2ey19.aspx

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top