Saltar para o conteúdo principal
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 pesquisa.

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 utilizadas para aceder aos valores correspondentes, semelhante a um dicionário real onde se procura uma palavra (chave) para encontrar a 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 duplicados e garante a integridade dos dados.
  3. Eficiência na Pesquisa: O uso do código hash da chave torna as operações de pesquisa extremamente rápidas.

A Hashtable em Ação

Vejamos como implementar e utilizar 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 desempenho relacionadas.
  • Chaves Únicas: Tentativas de inserção de chaves duplicadas resultam em exceções.

Dicas para Uso Eficiente

  • Prefira utilizar 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.
  • Verifique sempre a existência de uma chave antes de inserir, para evitar exceções.
  • Considere utilizar 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 as suas forças e limitações. Ao dominar as suas características, pode otimizar o seu código e tornar os seus programas mais eficientes.

Happy coding!