Trilhas
/
Java
Java
/
Exercícios
/
Conhecedor de ligações internacionais
Conhecedor de ligações internacionais

Conhecedor de ligações internacionais

Exercício de aprendizagem

Introdução

Maps

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

Instruções

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).

1. Retorne os códigos em um mapa

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 

2. Adicione entradas ao dicionário

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" }

3. Descubra o país de um código de discagem

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"

4. Não permita duplicatas

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" }

5. Encontre o código de discagem de um país

É 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

6. Atualize o código de discagem do país

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"}
Editar via GitHub O link abre em uma nova janela ou aba
Java Exercism

Tudo pronto para começar Conhecedor de ligações internacionais?

Crie sua conta no Exercism para aprender e dominar Java com 26 conceitos158 exercícios e mentoria humana de verdade, tudo de graça.