English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Hashtable es una colección no genérica que almacena pares de clave-valor, similar a la colección genérica Dictionary<TKey, TValue>. Optimiza la búsqueda calculando el código hash de cada clave y almacenándolo en diferentes buckets internos, luego coincide con el código hash de la clave especificada al acceder al valor.
Hashtable almacena pares de clave-valor.
Pertenece al espacio de nombres System.Collection.
Implementa la interfaz IDictionary.
Las claves deben ser únicas y no pueden ser null.
Los valores pueden ser null o repetidos.
Se puede acceder a los valores pasando la clave relevante al índice, por ejemplo myHashtable[key]
Los elementos se almacenan como objetos DictionaryEntry.
A continuación se muestra un ejemplo de cómo crear una tabla de hash y agregar elementos.
Hashtable numberNames = new Hashtable(); numberNames.Add(1, "Uno"); //Añadir clave usando el método Add()/Valor numberNames.Add(2, "Dos"); numberNames.Add(3, "Tres"); //A continuación se produce una excepción de tiempo: clave ya añadida. run-excepción de tiempo: clave ya añadida. //numberNames.Add(3, "Tres"); foreach(DictionaryEntry de in numberNames) Console.WriteLine("Clave: {0}, Valor: {1} //Usar colección-Sintaxis initializer para crear una tabla de hash var cities = new Hashtable(){ {"UK", "London, Manchester, Birmingham"}, {"USA", "Chicago, New York, Washington"}, {"India", "Mumbai, New Delhi, Pune"} }; foreach(DictionaryEntry de in cities) Console.WriteLine("Clave: {0}, Valor: {1}
La colección de Hashtable puede incluir todos los elementos del diccionario, como se muestra a continuación.
Dictionary<int, string> dict = new Dictionary<int, string>(); dict.Add(1, "one"); dict.Add(2, "two"); dict.Add(3, "three"); Hashtable ht = new Hashtable(dict);
Se puede recuperar el valor de una clave existente pasando una clave al indexador. La tabla de hash no es genérica, por lo tanto, se debe realizar una conversión forzada al recuperar valores.
//Usar colección-Sintaxis initializer para crear una tabla de hash var cities = new Hashtable(){ {"UK", "London, Manchester, Birmingham"}, {"USA", "Chicago, New York, Washington"}, {"India", "Mumbai, New Delhi, Pune"} }; string citiesOfUK = (string) cities["UK"]; //Convertir a cadena string citiesOfUSA = (string) cities["USA"]; //Convertir a cadena Console.WriteLine(citiesOfUK); Console.WriteLine(citiesOfUSA); cities["UK"] = "Liverpool, Bristol"; // Actualizar el valor de UK cities["USA"] = "Los Angeles, Boston"; //Actualizar el valor de USA if(!cities.ContainsKey("France")){ cities["France"] = "Paris"; }
El método Remove () elimina el par clave-valor que coincida con el valor especificado en la tabla de hash. Si no se encuentra la clave especificada en la tabla de hash, se lanza una excepción KeyNotFoundException, por lo tanto, se debe verificar la existencia de la clave actual utilizando el método ContainsKey () antes de eliminar.
El método Clear() permite eliminar todos los elementos de manera simultánea.
var cities = new Hashtable(){ {"UK", "London, Manchester, Birmingham"}, {"USA", "Chicago, New York, Washington"}, {"India", "Mumbai, New Delhi, Pune"} }; cities.Remove("UK"); // Eliminar UK //cities.Remove("France"); //Lanzar excepción en tiempo de ejecución: KeyNotFoundException if(cities.ContainsKey("France")){ // Verifique antes de extraer la clave cities.Remove("France"); } cities.Clear(); //Eliminar todos los elementos
La siguiente imagen ilustra la estructura jerárquica de la clase Hashtable.