Um Map é uma estrutura de dados para armazenar pares de chave e valor. É semelhante a dicionários em outras linguagens de programação. A interface Map define operações sobre um Map.
Java tem várias implementações diferentes de Map. HashMap é uma das mais usadas.
// Make an instance
Map<String, Integer> fruitPrices = new HashMap<>();
Adicione entradas ao map usando put.
fruitPrices.put("apple", 100);
fruitPrices.put("pear", 80);
// => { "apple" => 100, "pear" => 80 }
Só um valor pode ser associado a cada chave.
Chamar put com a mesma chave atualiza o valor da chave.
fruitPrices.put("pear", 40);
// => { "apple" => 100, "pear" => 40 }
Use get para obter o valor de uma chave.
fruitPrices.get("apple"); // => 100
Use containsKey para ver se o map contém uma chave específica.
fruitPrices.containsKey("apple"); // => true
fruitPrices.containsKey("orange"); // => false
Remova entradas com remove.
fruitPrices.put("plum", 90); // Add plum to map
fruitPrices.remove("plum"); // Removes plum from map
O método size retorna o número de entradas.
fruitPrices.size(); // Returns 2
Você pode usar os métodos keySet ou values para obter as chaves ou os valores de um Map como um Set ou uma coleção, respectivamente.
fruitPrices.keySet(); // Returns "apple" and "pear" in a set
fruitPrices.values(); // Returns 100 and 80, in a Collection
Neste exercício, você vai escrever código para gerenciar um dicionário de códigos de discagem internacionais usando um Map.
O dicionário permite procurar o nome de um país (o valor do mapa, como uma String) pelo código de discagem internacional (a chave do mapa, como um Integer).
Implemente o método getCodes, que não recebe parâmetros e retorna um mapa dos códigos de discagem para os países que estão atualmente no dicionário.
DialingCodes dialingCodes = new DialingCodes();
dialingCodes.getCodes();
// => empty map
O dicionário precisa ser populado.
Implemente o método setDialingCode, que recebe um código de discagem e o país correspondente e adiciona o código de discagem e o país.
Se o código de discagem já estiver no mapa, atualize o mapa com o código e o país fornecidos.
DialingCodes dialingCodes = new DialingCodes();
dialingCodes.setDialingCode(679, "Unknown");
// => { 679 => "Unknown" }
dialingCodes.setDialingCode(679, "Fiji");
// => { 679 => "Fiji" }
Implemente o método getCountry, que recebe um código de discagem e retorna o nome do país com esse código de discagem.
DialingCodes dialingCodes = new DialingCodes();
dialingCodes.setDialingCode(55, "Brazil");
dialingCodes.getCountry(55);
// => "Brazil"
Ao adicionar um código de discagem, é preciso cuidado para evitar que um código ou um país seja adicionado duas vezes.
Nas situações em que isso acontece, pode-se assumir que a primeira entrada é a entrada correta.
Implemente o método addNewDialingCode, que adiciona uma entrada para o código de discagem e o país fornecidos.
No entanto, diferentemente de setDialingCode, ele não faz nada se o código de discagem ou o país já estiver no mapa.
DialingCodes dialingCodes = new DialingCodes();
dialingCodes.addNewDialingCode(32, "Belgium");
dialingCodes.addNewDialingCode(379, "Vatican City");
// => { 32 => "Belgium", 379 => "Vatican City" }
dialingCodes.addNewDialingCode(32, "Other");
dialingCodes.addNewDialingCode(39, "Vatican City");
// => { 32 => "Belgium", 379 => "Vatican City" }
É raro, mas erros podem acontecer.
Para corrigir o erro, vamos precisar saber a qual código de discagem o país está mapeado no momento.
Para descobrir qual código de discagem precisa ser corrigido, implemente o método findDialingCode, que recebe um país e retorna o código de discagem desse país.
Retorne null se o país não estiver no mapa.
DialingCodes dialingCodes = new DialingCodes();
dialingCodes.addDialingCode(44, "UK");
dialingCodes.findDialingCode("UK");
// => 44
dialingCodes.findDialingCode("Unlisted");
// => null
Agora que sabemos qual código de discagem precisa ser corrigido, vamos atualizar o código.
Implemente o método updateCountryDialingCode, que recebe o novo código de discagem do país e o nome do país e atualiza de acordo.
Não faça nada se o país não estiver no mapa (já que este método serve apenas para ajudar a corrigir erros).
DialingCodes dialingCodes = new DialingCodes();
dialingCodes.addDialingCode(88, "Japan");
// => { 88 => "Japan" }
dialingCodes.updateCountryDialingCode(81, "Japan");
// => { 81 => "Japan" }
dialingCodes.updateCountryDialingCode(32, "Mars");
// => { 81 => "Japan"}
Crie sua conta no Exercism para aprender e dominar Java com 26 conceitos158 exercícios e mentoria humana de verdade, tudo de graça.