Track
/
Java
Java
/
Esercizi
/
Intenditore di chiamate internazionali
Intenditore di chiamate internazionali

Intenditore di chiamate internazionali

Esercizio di apprendimento

Introduzione

Le mappe

Una mappa è una struttura dati che memorizza coppie chiave-valore. È simile ai dizionari di altri linguaggi di programmazione. L'interfaccia Map definisce le operazioni su una mappa.

Java ha diverse implementazioni di Map. Una delle più usate è HashMap.

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

Aggiungi voci alla mappa con put.

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

A ogni chiave può essere associato un solo valore. Chiamare put con la stessa chiave aggiorna il valore di quella chiave.

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

Usa get per ottenere il valore associato a una chiave.

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

Usa containsKey per verificare se la mappa contiene una determinata chiave.

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

Rimuovi le voci con remove.

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

Il metodo size restituisce il numero di voci.

fruitPrices.size();  // Returns 2

Puoi usare i metodi keySet o values per ottenere rispettivamente le chiavi o i valori di una mappa come Set o collection.

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

Istruzioni

In questo esercizio scriverai codice per gestire un dizionario di prefissi telefonici internazionali usando una Map.

Il dizionario permette di cercare il nome di un paese (il valore della mappa, come String) tramite il prefisso telefonico internazionale (la chiave della mappa, come Integer).

1. Restituisci i prefissi in una mappa

Implementa il metodo getCodes che non accetta parametri e restituisce una mappa che associa i prefissi telefonici ai paesi attualmente presenti nel dizionario.

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

2. Aggiungi voci al dizionario

Il dizionario deve essere popolato. Implementa il metodo setDialingCode che accetta un prefisso telefonico ed il paese corrispondente, ed aggiunge il prefisso ed il paese. Se il prefisso è già nella mappa, aggiorna la mappa con il prefisso ed il paese forniti.

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

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

3. Trova il paese di un prefisso telefonico

Implementa il metodo getCountry che accetta un prefisso telefonico e restituisce il nome del paese associato a quel prefisso.

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

4. Non permettere duplicati

Quando aggiungi un prefisso, bisogna fare attenzione a non aggiungere due volte lo stesso prefisso o lo stesso paese. Quando succede, si può presumere che la prima voce inserita sia quella giusta. Implementa il metodo addNewDialingCode che aggiunge una voce per il prefisso telefonico ed il paese indicati. A differenza di setDialingCode, però, non fa nulla se il prefisso o il paese sono già nella mappa.

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. Trova il prefisso telefonico di un paese

È raro, ma si possono commettere errori. Per correggere l'errore, dobbiamo sapere a quale prefisso telefonico il paese è attualmente associato. Per scoprire quale prefisso deve essere corretto, implementa il metodo findDialingCode che accetta un paese e restituisce il prefisso telefonico di quel paese. Restituisci null se il paese non è nella mappa.

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

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

6. Aggiorna il prefisso telefonico di un paese

Ora che sappiamo quale prefisso deve essere corretto, procediamo ad aggiornarlo. Implementa il metodo updateCountryDialingCode che accetta il nuovo prefisso telefonico del paese ed il nome del paese, e aggiorna di conseguenza. Non fare nulla se il paese non è nella mappa (questo metodo serve solo ad aiutare a correggere gli errori).

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

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

dialingCodes.updateCountryDialingCode(32, "Mars");
// => { 81 => "Japan"}
Modifica tramite GitHub Il link si apre in una nuova finestra o scheda
Java Exercism

Vuoi iniziare Intenditore di chiamate internazionali?

Iscriviti a Exercism per imparare e padroneggiare Java con 26 concetti158 esercizi e il mentoring di persone reali, tutto gratis.