Um dicionário é uma coleção de elementos em que cada elemento é composto por uma chave e um valor, de tal forma que, se se passar uma chave a um método do dicionário, este devolve o valor associado. Tem o mesmo papel que os mapas ou os arrays associativos têm noutras linguagens.
Podes criar um dicionário da seguinte forma:
new Dictionary<int, string>();
// Empty dictionary
Ou
new Dictionary<int, string>
{
[1] = "One",
[2] = "Two"
};
// Or
new Dictionary<int, string>
{
{1, "One"},
{2, "Two"}
};
// 1 => "One", 2 => "Two"
Repara que os tipos da chave e do valor fazem parte da definição do dicionário.
Depois de criado, podes adicionar ou remover entradas de um dicionário com os seus métodos incorporados Add e Remove.
Podes obter ou atualizar valores num dicionário indexando o dicionário com uma chave:
var numbers = new Dictionary<int, string>
{
{1, "One"},
{2, "Two"}
};
// Set the value of the element with key 2 to "Deux"
numbers[2] = "Deux";
// Get the value of the element with key 2
numbers[2];
// => "Deux"
Podes testar se um valor existe no dicionário com:
var dict = new Dictionary<string, string>{/*...*/};
dict.ContainsKey("some key that exists");
// => true
A enumeração de um dicionário percorre os seus pares chave/valor. Os dicionários também têm propriedades que permitem enumerar as suas chaves ou os seus valores.
Neste exercício vais escrever código para manteres um registo de indicativos internacionais de telefone através de um dicionário de indicativos internacionais.
O dicionário usa um número inteiro para as chaves (o indicativo) e uma string (o nome do país) para os valores.
Tens 9 tarefas que envolvem a classe estática DialingCodes.
Implementa o método (static) DialingCodes.GetEmptyDictionary() que devolve um dicionário vazio.
DialingCodes.GetEmptyDictionary();
// => empty dictionary
Existe um dicionário pré-preenchido que contém os seguintes 3 indicativos: "United States of America", com o código 1, "Brazil", com o código 55, e "India", com o código 91. Implementa o método (static) DialingCodes.GetExistingDictionary() para devolver o dicionário pré-preenchido:
DialingCodes.GetExistingDictionary();
// => 1 => "United States of America", 55 => "Brazil", 91 => "India"
Implementa o método (static) DialingCodes.AddCountryToEmptyDictionary() que cria um dicionário e lhe adiciona um indicativo e o nome do país associado.
DialingCodes.AddCountryToEmptyDictionary(44, "United Kingdom");
// => 44 => "United Kingdom"
Implementa o método (static) DialingCodes.AddCountryToExistingDictionary() que adiciona um indicativo e o nome do país associado a um dicionário não vazio.
DialingCodes.AddCountryToExistingDictionary(DialingCodes.GetExistingDictionary(),
44, "United Kingdom");
// => 1 => "United States of America", 44 => "United Kingdom", 55 => "Brazil", 91 => "India"
Implementa o método (static) DialingCodes.GetCountryNameFromDictionary() que recebe um indicativo e devolve o nome do país correspondente. Se o indicativo não estiver contido no dicionário, é devolvida uma string vazia.
DialingCodes.GetCountryNameFromDictionary(
DialingCodes.GetExistingDictionary(), 55);
// => "Brazil"
DialingCodes.GetCountryNameFromDictionary(
DialingCodes.GetExistingDictionary(), 999);
// => string.Empty
Implementa o método (static) DialingCodes.CheckCodeExists() para verificar se um indicativo existe no dicionário.
DialingCodes.CheckCodeExists(DialingCodes.GetExistingDictionary(), 55);
// => true
Implementa o método (static) DialingCodes.UpdateDictionary() que recebe um indicativo e substitui o nome do país correspondente no dicionário pelo nome do país passado como parâmetro. Se o indicativo não existir no dicionário, o dicionário fica inalterado.
DialingCodes.UpdateDictionary(
DialingCodes.GetExistingDictionary(), 1, "Les États-Unis");
// => 1 => "Les États-Unis", 55 => "Brazil", 91 => "India"
DialingCodes.UpdateDictionary(
DialingCodes.GetExistingDictionary(), 999, "Newlands");
// 1 => "United States of America", 55 => "Brazil", 91 => "India"
Implementa o método (static) DialingCodes.RemoveCountryFromDictionary() que recebe um indicativo e remove do dicionário o registo correspondente, ou seja, o indicativo e o nome do país.
DialingCodes.RemoveCountryFromDictionary(
DialingCodes.GetExistingDictionary(), 91);
// => 1 => "United States of America", 55 => "Brazil"
Implementa o método (static) DialingCodes.FindLongestCountryName() que devolve o nome do país com o nome mais longo armazenado no dicionário.
DialingCodes.FindLongestCountryName(
DialingCodes.GetExistingDictionary());
// => "United States of America"
Inscreve-te no Exercism para aprenderes e dominares C# com 62 conceitos178 exercícios, e mentoria humana real, tudo grátis.