Parcours
/
Java
Java
/
Exercices
/
Connaisseur en appels internationaux
Connaisseur en appels internationaux

Connaisseur en appels internationaux

Exercice d'apprentissage

Introduction

Maps

Une Map est une structure de données qui stocke des paires clé-valeur. Elle ressemble aux dictionnaires d'autres langages de programmation. L'interface Map définit les opérations applicables à une Map.

Java propose différentes implémentations de Map. HashMap est l'une des plus utilisées.

// Make an instance
Map<String, Integer> fruitPrices = new HashMap<>();

Pour ajouter des entrées à la Map, utilise put.

fruitPrices.put("apple", 100);
fruitPrices.put("pear", 80);
// => { "apple" => 100, "pear" => 80 }

Une seule valeur peut être associée à chaque clé. Appeler put avec la même clé met à jour la valeur associée à cette clé.

fruitPrices.put("pear", 40);
// => { "apple" => 100, "pear" => 40 }

Pour obtenir la valeur associée à une clé, utilise get.

fruitPrices.get("apple"); // => 100

Pour savoir si la Map contient une clé donnée, utilise containsKey.

fruitPrices.containsKey("apple");  // => true
fruitPrices.containsKey("orange"); // => false

Pour supprimer des entrées, utilise remove.

fruitPrices.put("plum", 90);  // Add plum to map
fruitPrices.remove("plum");   // Removes plum from map

La méthode size renvoie le nombre d'entrées.

fruitPrices.size();  // Returns 2

Tu peux utiliser les méthodes keySet ou values pour obtenir respectivement les clés ou les valeurs d'une Map sous forme d'un Set ou d'une collection.

fruitPrices.keySet();  // Returns "apple" and "pear" in a set
fruitPrices.values();  // Returns 100 and 80, in a Collection

Instructions

Dans cet exercice, tu vas écrire du code pour gérer un dictionnaire d'indicatifs téléphoniques internationaux à l'aide d'une Map.

Le dictionnaire permet de retrouver le nom d'un pays (la valeur de la Map, de type String) à partir de l'indicatif téléphonique international (la clé de la Map, de type Integer).

1. Renvoie les codes dans une Map

Implémente la méthode getCodes qui ne prend aucun paramètre et renvoie une Map associant les indicatifs téléphoniques aux pays actuellement présents dans le dictionnaire.

DialingCodes dialingCodes = new DialingCodes();
dialingCodes.getCodes();
// => empty map 

2. Ajoute des entrées au dictionnaire

Le dictionnaire doit être rempli. Implémente la méthode setDialingCode qui prend un indicatif téléphonique et le pays correspondant, puis ajoute cet indicatif et ce pays. Si l'indicatif téléphonique est déjà dans la Map, mets à jour celle-ci avec l'indicatif et le pays fournis.

DialingCodes dialingCodes = new DialingCodes();
dialingCodes.setDialingCode(679, "Unknown");
// => { 679 => "Unknown" }

dialingCodes.setDialingCode(679, "Fiji");
// => { 679 => "Fiji" }

3. Retrouve le pays associé à un indicatif téléphonique

Implémente la méthode getCountry qui prend un indicatif téléphonique et renvoie le nom du pays correspondant à cet indicatif.

DialingCodes dialingCodes = new DialingCodes();
dialingCodes.setDialingCode(55, "Brazil");
dialingCodes.getCountry(55);
// => "Brazil"

4. N'autorise pas les doublons

Lorsque tu ajoutes un indicatif téléphonique, il faut faire attention à ne pas ajouter deux fois le même indicatif ou le même pays. Dans ce cas de figure, on considère que la première entrée est la bonne. Implémente la méthode addNewDialingCode qui ajoute une entrée pour l'indicatif téléphonique et le pays donnés. Cependant, contrairement à setDialingCode, elle ne fait rien si l'indicatif téléphonique ou le pays est déjà dans la Map.

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. Trouve l'indicatif téléphonique d'un pays

C'est rare, mais des erreurs peuvent se produire. Pour corriger l'erreur, il faut savoir à quel indicatif téléphonique le pays est actuellement associé. Pour trouver quel indicatif téléphonique doit être corrigé, implémente la méthode findDialingCode qui prend un pays et renvoie son indicatif téléphonique. Renvoie null si le pays n'est pas dans la Map.

DialingCodes dialingCodes = new DialingCodes();
dialingCodes.addDialingCode(44, "UK");
dialingCodes.findDialingCode("UK");
// => 44

dialingCodes.findDialingCode("Unlisted");
// => null

6. Mets à jour l'indicatif téléphonique d'un pays

Maintenant que l'on sait quel indicatif téléphonique doit être corrigé, on peut le mettre à jour. Implémente la méthode updateCountryDialingCode qui prend le nouvel indicatif téléphonique du pays et le nom du pays, puis met à jour l'entrée en conséquence. Ne fais rien si le pays n'est pas dans la Map (cette méthode ne sert qu'à corriger des erreurs).

DialingCodes dialingCodes = new DialingCodes();
dialingCodes.addDialingCode(88, "Japan");
// => { 88 => "Japan" }

dialingCodes.updateCountryDialingCode(81, "Japan");
// => { 81 => "Japan" }

dialingCodes.updateCountryDialingCode(32, "Mars");
// => { 81 => "Japan"}
Modifie via GitHub Le lien s'ouvre dans une nouvelle fenêtre ou un nouvel onglet
Java Exercism

Prêt à commencer Connaisseur en appels internationaux ?

Inscris-toi sur Exercism pour apprendre et maîtriser Java avec 26 concepts158 exercices, et un vrai mentorat humain, le tout gratuitement.