C# Programming

Dominando HashMaps em C# com Dictionary

Spread the love

C# não oferece uma classe diretamente nomeada “HashMap”, ao contrário de Java. No entanto, sua classe Dictionary<TKey, TValue> fornece funcionalidade equivalente e é a abordagem recomendada para operações de hash map.

Sumário

Usando Dictionary<TKey, TValue> como um Hash Map

Dictionary<TKey, TValue> oferece um armazenamento chave-valor com complexidade de tempo média O(1) para operações comuns como inserção, exclusão e recuperação. TKey especifica o tipo da chave, e TValue define o tipo de valor associado. Vamos explorar seu uso:

Criando e Populando um Dictionary:


// Crie um dicionário para armazenar strings como chaves e inteiros como valores.
Dictionary<string, int> myDictionary = new Dictionary<string, int>();

// Adicione pares chave-valor usando Add()
myDictionary.Add("apple", 1);
myDictionary.Add("banana", 2);
myDictionary.Add("cherry", 3);

// Ou use a sintaxe de inicializador de coleção:
Dictionary<string, int> anotherDictionary = new Dictionary<string, int>()
{
    {"grape", 4},
    {"orange", 5}
};

Acessando Valores:

Recupere valores usando suas chaves. TryGetValue() é mais seguro que indexação direta, tratando casos em que a chave está ausente:


int appleCount;
if (myDictionary.TryGetValue("apple", out appleCount))
{
    Console.WriteLine($"Contagem de maçãs: {appleCount}"); // Saída: Contagem de maçãs: 1
}
else
{
    Console.WriteLine("Maçã não encontrada.");
}

// Acesso direto (lança KeyNotFoundException se a chave estiver faltando)
try
{
    Console.WriteLine($"Contagem de bananas: {myDictionary["banana"]}"); // Saída: Contagem de bananas: 2
}
catch (KeyNotFoundException)
{
    Console.WriteLine("Chave não encontrada.");
}

Iterando Através de um Dictionary:


Console.WriteLine("Conteúdo do dicionário:");
foreach (KeyValuePair<string, int> kvp in myDictionary)
{
    Console.WriteLine($"Chave: {kvp.Key}, Valor: {kvp.Value}");
}

Removendo Elementos:


myDictionary.Remove("banana"); 

Verificando a Existência da Chave:


if (myDictionary.ContainsKey("cherry"))
{
    Console.WriteLine("Cereja existe.");
}

Uso Avançado e Considerações

Para cenários que exigem segurança de thread, considere ConcurrentDictionary<TKey, TValue>. Ao escolher chaves, certifique-se de que elas implementem GetHashCode() e Equals() corretamente para evitar colisões e manter a eficiência do hash map. Entender esses aspectos é crucial para o desempenho ideal.

Conclusão

Dictionary<TKey, TValue> em C# é o equivalente eficaz de um HashMap, fornecendo excelente desempenho para armazenamento chave-valor. Sua versatilidade, combinada com a disponibilidade de alternativas thread-safe, o torna uma estrutura de dados fundamental para diversas aplicações C#.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *