Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Dúvida] Tabela Hash?

Gostaria de saber a diferença entre tabelas hash e dicionario em C# pois no meu ponto de vista está parecendo a mesma coisa.

Se for diferente quem poder me ajudar.

1 resposta
solução!

Oii Levi, tudo bem?

De fato, eles podem parecer bastante similares porque ambos armazenam dados em pares de chave-valor. No entanto, existem algumas diferenças importantes que vale a pena destacar:

  1. Implementação e Uso:

    • Dicionário (Dictionary<TKey, TValue>): Em C#, o Dictionary é uma coleção genérica que armazena pares de chave-valor. Ele usa uma tabela hash internamente para organizar seus elementos, o que permite uma busca rápida por chave. É uma parte do namespace System.Collections.Generic.
    • Tabela Hash (Hashtable): O Hashtable é uma coleção não genérica que também armazena pares de chave-valor em uma estrutura de tabela hash. Mas, ele aceita chaves e valores como objetos (object), o que significa que você pode inserir qualquer tipo de dado, mas perde os benefícios da tipagem forte e das verificações de tipo em tempo de compilação. O Hashtable faz parte do namespace System.Collections.
  2. Tipagem:

    • Dicionário: É fortemente tipado. Isso significa que você define os tipos de dados para as chaves e valores quando cria uma instância do dicionário. Por exemplo, Dictionary<string, int> só aceitará strings como chaves e inteiros como valores.
    • Tabela Hash: É fracamente tipado, aceitando qualquer tipo de objeto como chave ou valor. Isso pode levar a problemas de runtime se os tipos não forem tratados corretamente.
  3. Performance:

    • Ambos usam hash para armazenar e buscar itens rapidamente. No entanto, o Dictionary é geralmente preferido em aplicações modernas de C# devido à sua segurança de tipo e melhor integração com outras coleções genéricas.

No contexto do seu curso, onde você tá trabalhando com dicionários para associar bandas a uma lista de notas, o uso de Dictionary<string, List<int>> é ideal. Isso permite que cada banda (uma string) seja associada a uma lista de notas (inteiros), e você pode facilmente adicionar, remover ou modificar as notas para cada banda.

Espero que essa explicação tenha esclarecido as diferenças.

Um abraço e bons estudos.