2011-03-03 11 views
5

Cuál es la diferencia entre Dictionary y Hashtable. ¿Cómo puedo llegar a una conclusión sobre cuál usar? ¿Alguien puede ayudarme?Cuál es la diferencia principal entre Dictionary y Hashtable

+3

http://stackoverflow.com/questions/301371/why-dictionary-is-preferred-over-hashtable-in-c – Douglas

+0

Consulte la pregunta similar a continuación: http://stackoverflow.com/questions/1089132/net- hashtable-vs-dictionary-can-the-dictionary-be-as-fast El enlace –

Respuesta

1

Hashtable es obsoleto. Siempre use Diccionario.

1

soy novato en tablas hash también, pero ...

diccionario es una tabla básica con dos columnas (clave y el valor, tanto tiene ciertos tipos) y un montón de filas que se agregan más tarde. Verá que en el diccionario le da una clave y el diccionario le da el valor que agregó anteriormente con la misma clave.

En las cosas hashtable son ligeramente diferentes. Ahora tiene una tabla con dos columnas (clave y valor, ambos son de tipo "objeto"). Las claves pueden no ser únicas. Ahora virtualy tiene dos tablas: una con dos columnas: Key y Hash, y otra con dos columnas Hash y Value. Hash es un valor entero obtenido de Key. Resulta que si bien Keys puede ser único, Hashes puede no serlo. [Sin embargo, no estoy seguro de esto ... así que dije "virtualy" ...]

Ahora ejemplo:

Hashtable ht = new Hashtable(); 
// Key of type Int32 
ht[16] = "That is Int32"; 
// Key of type String 
ht["Blah"] = 15; 
// Key of type Boolean 
ht[false] = "That is boolean"; 
// Key of type String 
ht["Hohoho"] = false; 

y posterior Se puede acceder a cualquier valor almacenado en la tabla hash simplemente utilizando las teclas (si no hay tan clave que devuelve un valor nulo):

Console.WriteLine("ht[{0}] = {1};", 16, ht[16] ?? "null"); 
Console.WriteLine("ht[{0}] = {1};", "Test", ht["Test"] ?? "null"); // doesnt exist eh... 
Console.WriteLine("ht[{0}] = {1};", false, ht[false] ?? "null"); 
Console.WriteLine("ht[{0}] = {1};", "Hohoho", ht["Hohoho"] ?? "null"); 

Para sumarize:

diccionario es la siguiente:

[ Key ][ Value ] 
    A  1.5 
    B  1.6 
    C  -8 
    .... 

Y probabily tabla hash es la siguiente:

[ Key ][ Hash ] 
    A  1 
    B  2 
    C  -99 
     ... 

[ Hash ][ Value ] 
    -99  -8 
    1  1.6 
    2  1.5 
     .... 

espero que esto es algo muy útil. Cualquiera que pueda explicarlo mejor, no dude en hacerlo.

Gracias y buena suerte.

Cuestiones relacionadas