Diferencia entre diccionario y hashtable

Diccionario vs Hashtable

El diccionario está escrito (por lo tanto, los tipos de valor no necesitan ser incluidos), un Hashtable no lo es (por lo tanto, los tipos de valor deben ser escritos). Hashtable tiene una forma mejor de obtener un valor que el diccionario IMHО, porque siempre sabe que el valor es un objeto. Aunque esté utilizando .NET 3.5, es fácil escribir una extensión para un diccionario para obtener un comportamiento similar.

La clase Hashtable es un tipo específico de clase de diccionario que usa un valor entero (llamado hash) para ayudar en la gestión de sus claves. La clase Hashtable utiliza el hash para acelerar la búsqueda de una clave específica en la selección. Cada objeto en .NET deriva de la clase Оbject. Esta clase admite el método GetHash, que devuelve un entero que identifica de forma única el objeto. La clase Hashtable es una colección muy eficiente en general. El único problema con la clase Hashtable es que requiere un poco de un encabezado, y para pequeñas revisiones (menos de diez elementos) que el encabezado puede impedir el rendimiento.

Hay una diferencia más importante entre una tabla hash y un diccionario. Si utiliza los indexadores para obtener un valor de HashTable, HashTable devolverá con éxito un valor nulo para un elemento inexistente, mientras que el Diccionario mostrará un error si intenta acceder a un elemento utilizando un indexador que no existe en el Diccionario..

El HashTable es la clase base que se escribe débilmente; la clase abstracta de DictionaryBase está tipificada de forma estricta y utiliza internamente una tabla hash.

Algo extraño que se ha notado en el Diccionario es que, cuando agregamos las entradas múltiples en el Diccionario, se mantiene el comando en el que se agregan las entradas. Por lo tanto, si aplica una búsqueda en el Diccionario, obtendrá los ingresos en el mismo formulario en el que los insertó. Considerando que, esto no es cierto con no HashTable, cuando se agregan las mismas respuestas en Hashtable, el nombre no se mantiene. Si el 'Diccionario se basa en Hashtable' es verdadero, ¿por qué el Diccionario mantiene la regla pero HashTable no lo hace??

Como por qué se comportan de manera diferente, es porque Generic Dictionary implementa una tabla hash, pero no se basa en System.Cоllectiоns.Hashtable. La implementación del diccionario genérico se basa en la combinación de pares clave-valor de una lista. Luego, estos se indexan con los grupos de tablas hash para el acceso a rand, pero cuando devuelve una enumeración, simplemente recorre la lista en orden secuencial, que será el más apropiado de la inserción, ya que las entradas no se reutilizan..