Saltar al contenido principal
Publicado el

Clase Hashtable en C#

Compartir:

Introducción

En programación, elegir la estructura de datos correcta puede ser la diferencia entre un programa eficiente y uno ineficiente. La clase Hashtable es una de esas estructuras versátiles en C# que ofrece eficiencia en las operaciones de búsqueda.

¿Por qué usar la Hashtable?

A diferencia de otras estructuras de datos, la Hashtable almacena elementos en pares clave-valor, lo que facilita la recuperación rápida de valores. Las claves se usan para acceder a los valores correspondientes, de forma similar a un diccionario real donde se busca una palabra (clave) para encontrar su definición (valor).

Características Principales:

  1. Almacenamiento Clave-Valor: Permite recuperar un valor directamente por su clave, en lugar de buscar secuencialmente.
  2. Claves Únicas: Evita duplicados y garantiza la integridad de los datos.
  3. Eficiencia en la Búsqueda: El uso del código hash de la clave hace que las operaciones de búsqueda sean extremadamente rápidas.

La Hashtable en Acción

Veamos cómo implementar y usar la Hashtable en C#:

using System;
using System.Collections;

namespace Base {
  class ClaseHashtable {
    private Hashtable personas = new Hashtable() {
      { "Nelson Silva", 28 },
      { "Larissa Fernandes", 37 }
    };

    public void Run() {
      personas.Add("Pedro Henrique", 52);
      personas.Add("Raquel Soares", 68);

      personas["Pedro Henrique"] = 100;
      personas.Remove("Larissa Fernandes");
      personas.Clear();

      Console.WriteLine($"Número de personas: {personas.Count}");

      foreach (DictionaryEntry persona in personas) {
        Console.WriteLine($"Nombre: {persona.Key}");
        Console.WriteLine($"Edad: {persona.Value}");
      }
    }
  }
}

Cuándo Usar y Cuándo No Usar

Ventajas:

  • Acceso Rápido: Para escenarios que requieren recuperaciones frecuentes, la Hashtable es ideal.
  • Flexibilidad: Acepta diferentes tipos de objetos como clave o valor.

Limitaciones:

  • Sin Orden Garantizado: Los elementos insertados en la Hashtable no mantienen un orden específico.
  • Boxing y Unboxing: Al no ser genérica, puede verse afectada por problemas de rendimiento relacionados.
  • Claves Únicas: Los intentos de insertar claves duplicadas generan excepciones.

Consejos para un Uso Eficiente

  • Prefiere usar Dictionary<TKey, TValue> si conoces los tipos de datos de antemano, ya que es una colección genérica y puede evitar el overhead del boxing y unboxing.
  • Verifica siempre la existencia de una clave antes de insertarla, para evitar excepciones.
  • Considera usar SortedDictionary o SortedList si el orden de los elementos es importante.

Conclusión

La clase Hashtable es una herramienta poderosa en C#. Sin embargo, como cualquier estructura de datos, es esencial conocer sus fortalezas y limitaciones. Al dominar sus características, puedes optimizar tu código y hacer tus programas más eficientes.

Happy coding!