Tabla hash de C# con ejemplos
โก Resumen inteligente
En C#, una tabla hash es una colecciรณn del espacio de nombres System.Collections que almacena datos como pares clave-valor, donde cada clave รบnica se corresponde con un valor y la clave permite una bรบsqueda rรกpida de ese valor almacenado.

ยฟQuรฉ es Hashtable en C#?
Una tabla hash es una colecciรณn especial que se utiliza para almacenar elementos clave-valor. Entonces, en lugar de almacenar solo un valor como la pila, la lista de matrices y la cola, la tabla hash almacena 2 valores. Estos 2 valores forman un elemento de la tabla hash.
A continuaciรณn se muestran algunos ejemplos de cรณmo podrรญan verse los valores de una tabla hash.
{ "001" , ".Net" }
{ "002" , ".C#" }
{ "003" , "ASP.Net" }
Arriba tenemos 3 pares de valores clave. Las claves de cada elemento son 001, 002 y 003 respectivamente. Los valores de cada par clave-valor son ". Netโ, โC#โ y โASP.Netโ respectivamente.
Veamos con mรกs detalle las operaciones disponibles para la colecciรณn Hashtable.
Declaraciรณn de la tabla hash
La declaraciรณn de una Hashtable se muestra a continuaciรณn. Una Hashtable se crea con la ayuda del tipo de datos Hashtable. La palabra clave "nueva" se utiliza para crear un objeto de Hashtable. Luego, el objeto se asigna a la variable ht.
Hashtable ht = new Hashtable()
Agregar elementos a la Hashtable
El mรฉtodo Add se utiliza para agregar un elemento al cola. La sintaxis general de la declaraciรณn se proporciona a continuaciรณn.
HashTable.add("key","value")
Ejemplo 1:
Recuerde que cada elemento de la tabla hash se compone de 2 valores, uno es la clave y el otro es el valor.
Ahora, veamos cรณmo esto funciona a nivel de cรณdigo. Todo el cรณdigo mencionado a continuaciรณn se escribirรก en nuestra aplicaciรณn de consola.
El cรณdigo se escribirรก en nuestro archivo Program.cs. En el siguiente programa, escribiremos el cรณdigo para ver cรณmo podemos utilizar los mรฉtodos mencionados anteriormente.
Por ahora, en nuestro ejemplo, solo veremos cรณmo podemos crear una tabla hash, agregar elementos a la tabla hash y mostrarlos en consecuencia.
using System; using System.Collections; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace DemoApplication { class Program { static void Main(string[] args) { Hashtable ht = new Hashtable(); ht.Add("001",".Net"); ht.Add("002","C#"); ht.Add("003","ASP.Net"); ICollection keys = ht.Keys; foreach (String k in keys) { Console.WriteLine(ht[k]); } Console.ReadKey(); } } }
Code Explicaciรณn:-
- Primero, declaramos la variable hashtable usando el tipo de datos Hashtable usando la palabra clave "Nuevo". El nombre de la variable definida es 'ht'.
- Luego agregamos elementos a la tabla hash usando el mรฉtodo Agregar. Recuerde que debemos agregar un elemento clave y de valor al agregar algo a la tabla hash.
- No existe una forma directa de mostrar los elementos de una tabla hash.
- Para mostrar la tabla hash, primero necesitamos obtener la lista de claves (001, 002 y 003) de la tabla hash.
- Esto se hace a travรฉs de la interfaz ICollection. Este es un tipo de datos especial que se puede utilizar para almacenar las claves de colecciones de tablas hash. Luego asignamos las claves de la colecciรณn de la tabla hash a la variable "claves".
- A continuaciรณn, para cada valor clave, obtenemos el valor asociado en la tabla hash usando la declaraciรณn ht[k].
Si el cรณdigo anterior se ingresa correctamente y se ejecuta el programa, se mostrarรก el siguiente resultado.
Salida:
Veamos algunos mรฉtodos mรกs disponibles para tablas hash.
Contiene clave
Este mรฉtodo se utiliza para ver si hay una clave presente en Hashtable. A continuaciรณn se muestra la sintaxis general de esta declaraciรณn. La declaraciรณn devolverรก verdadero si la clave existe; de โโlo contrario, devolverรก el valor falso.
Hashtable.Containskey(key)
Contiene valor
Este mรฉtodo se utiliza para ver si un valor estรก presente en la tabla hash. A continuaciรณn se muestra la sintaxis general de esta declaraciรณn. La declaraciรณn devolverรก verdadero si el valor existe; de โโlo contrario, devolverรก el valor falso.
Hashtable.ContainsValue(value)
Ejemplo 2:
Cambiemos el cรณdigo en nuestro Aplicaciรณn de consola para mostrar cรณmo podemos utilizar el mรฉtodo "Containskey" y "ContainsValue".
using System; using System.Collections; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace DemoApplication { class Program { static void Main(string[] args) { Hashtable ht = new Hashtable(); ht.Add("001",".Net"); ht.Add("002","C#"); ht.Add("003","ASP.Net"); Console.WriteLine(ht.ContainsKey("001")); Console.WriteLine(ht.ContainsValue("C#")); Console.ReadKey(); } } }
Code Explicaciรณn:-
- Primero, usamos el mรฉtodo ContieneKey para ver si la clave estรก presente en la tabla hash. Este mรฉtodo devolverรก verdadero si la clave estรก presente en la tabla hash. Este mรฉtodo deberรญa devolver verdadero ya que la clave existe en la tabla hash.
- Luego usamos el mรฉtodo ContieneValue para ver si el valor estรก presente en la tabla hash. Este mรฉtodo devolverรก "verdadero" ya que el valor existe en la tabla hash.
Si el cรณdigo anterior se ingresa correctamente y se ejecuta el programa, se mostrarรก el siguiente resultado.
Salida:
En el resultado, puede ver claramente que tanto la clave como el valor que se busca estรกn presentes en la tabla hash.
Cรณmo recorrer una tabla hash en C#
Los ejemplos anteriores leen valores a travรฉs de la colecciรณn Keys, pero una tabla hash se puede recorrer de una manera mรกs limpia. Un bucle foreach sobre un DictionaryEntry proporciona la clave y el valor de cada elemento en una sola pasada, que es la forma mรกs comรบn de leer una tabla hash.
Paso 1) Crea una tabla hash y agrรฉgale tres pares clave-valor.
Paso 2) Recorre la tabla hash con una variable DictionaryEntry y, a continuaciรณn, lee las propiedades Clave y Valor de cada entrada.
using System; using System.Collections; namespace DemoApplication { class Program { static void Main(string[] args) { Hashtable ht = new Hashtable(); ht.Add("101", "Java"); ht.Add("102", "Python"); ht.Add("103", "Kotlin"); foreach (DictionaryEntry entry in ht) { Console.WriteLine(entry.Key + " - " + entry.Value); } Console.ReadKey(); } } }
Code Explicaciรณn:-
- Se crea una tabla hash llamada ht y se insertan tres pares clave-valor con el mรฉtodo Add.
- El bucle foreach asigna cada elemento a un DictionaryEntry, cuyas propiedades Key y Value exponen las dos mitades del par.
Cuando se ejecuta el programa, imprime cada clave junto a su valor, como por ejemplo 101. JavaDado que una tabla hash no conserva el orden de inserciรณn, los pares pueden aparecer en una secuencia diferente a la de su adiciรณn. Para leer solo las claves, recorra la colecciรณn de claves; para leer solo los valores, recorra la colecciรณn de valores.
Mรฉtodos y propiedades de las tablas hash en C#
La clase Hashtable expone un pequeรฑo conjunto de mรฉtodos y propiedades que cubren prรกcticamente todas las tareas necesarias, desde agregar y eliminar pares hasta verificar la pertenencia y contar elementos. Los miembros mรกs รบtiles se enumeran a continuaciรณn.
| Miembro | Tipo | Mareas Ideales para Lecciones |
|---|---|---|
| Agregar(clave, valor) | Mรฉtodo | Inserta un nuevo par clave-valor; la clave debe ser รบnica. |
| Eliminar (clave) | Mรฉtodo | Elimina el elemento que coincide con la clave especificada. |
| Claro() | Mรฉtodo | Elimina todos los pares clave-valor de la tabla hash. |
| ContieneClave(clave) | Mรฉtodo | Devuelve verdadero cuando la clave proporcionada estรก presente. |
| ContieneValor(valor) | Mรฉtodo | Devuelve verdadero cuando el valor dado estรก presente. |
| Contar | Propiedad | Obtiene el nรบmero de pares clave-valor almacenados. |
| Teclados | Propiedad | Devuelve una colecciรณn de todas las claves. |
| Valores | Propiedad | Devuelve una colecciรณn de todos los valores. |
Debido a que cada clave estรก cifrada mediante una funciรณn hash, ContainsKey y el indexador localizan un elemento en un tiempo prรกcticamente constante, lo que hace que una tabla hash sea tan รบtil para bรบsquedas rรกpidas.
Diferencia entre tabla hash y diccionario en C#
Tanto una tabla hash como un diccionario almacenan pares clave-valor, y ambos pertenecen a la familia mรกs amplia de C#. coleccionesLa diferencia importante radica en la seguridad de tipos, y esa diferencia determina cuรกl debes elegir en el cรณdigo nuevo.
- Seguridad de tipos: Una tabla hash almacena cada clave y valor como un objeto, mientras que un diccionario Es genรฉrico, por lo que el compilador comprueba los tipos que utilizas.
- Espacio de nombres: Las tablas hash residen en System.Collections, mientras que los diccionarios residen en System.Collections.Generic.
- BoxEn g: Una tabla hash encapsula tipos de valores como int, pero un diccionario genรฉrico los almacena directamente y evita ese coste.
- Actuaciรณn: Generalmente, usar un diccionario es mรกs rรกpido porque no requiere una conversiรณn inversa desde objeto al leer un valor.
- Seguridad de la rosca: Hashtable ofrece la SyncEnvoltorio cronizado para un escritor con muchos lectores, mientras que el cรณdigo concurrente suele elegir ConcurrentDictionary.
Para cualquier proyecto nuevo, el diccionario genรฉrico es la opciรณn recomendada, y la tabla hash no genรฉrica aparece principalmente en cรณdigo antiguo.




