Publicado em

Classe Hashtable em C#

Partilhar:

Introdução

Em programação, escolher a estrutura de dados correta pode ser a diferença entre um programa eficiente e um ineficiente. A classe Hashtable é uma dessas estruturas versáteis em C# que oferece eficiência em operações de busca.

Porque usar a Hashtable?

Ao contrário de outras estruturas de dados, a Hashtable armazena elementos em pares chave-valor, facilitando a rápida recuperação de valores. As chaves são usadas para acessar os valores correspondentes, semelhante a um dicionário real onde se procura uma palavra (chave) para encontrar sua definição (valor).

Características Principais:

  1. Armazenamento Chave-Valor: Permite recuperar um valor diretamente pela chave, em vez de pesquisar sequencialmente.
  2. Chaves Únicas: Evita duplicatas e garante a integridade dos dados.
  3. Eficiência na Busca: O uso do código hash da chave torna as operações de busca extremamente rápidas.

A Hashtable em Ação

Vejamos como implementar e usar a Hashtable em C#:

using System;
using System.Collections;

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

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

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

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

      foreach (DictionaryEntry pessoa in pessoas) {
        Console.WriteLine($"Nome: {pessoa.Key}");
        Console.WriteLine($"Idade: {pessoa.Value}");
      }
    }
  }
}

Quando Usar e Quando Não Usar

Vantagens:

  • Acesso Rápido: Para cenários que exigem recuperações frequentes, a Hashtable é ideal.
  • Flexibilidade: Aceita diferentes tipos de objetos como chave ou valor.

Limitações:

  • Sem Ordem Garantida: Os elementos inseridos na Hashtable não mantêm uma ordem específica.
  • Boxing e Unboxing: Como não é genérica, pode sofrer com questões de performance relacionadas.
  • Chaves Únicas: Tentativas de inserção de chaves duplicadas resultam em exceções.

Dicas para Uso Eficiente

  • Prefira usar Dictionary<TKey, TValue> se souber os tipos de dados com antecedência, pois é uma coleção genérica e pode evitar o overhead do boxing e unboxing.
  • Sempre verifique a existência de uma chave antes de inserir, para evitar exceções.
  • Considere usar um SortedDictionary ou SortedList se a ordem dos elementos for importante.

Conclusão

A classe Hashtable é uma ferramenta poderosa em C#. No entanto, como qualquer estrutura de dados, é essencial conhecer suas forças e limitações. Ao dominar suas características, você pode otimizar seu código e tornar seus programas mais eficientes.

Happy coding!