Un Map es una estructura de datos que almacena pares de clave-valor. Es similar a los diccionarios de otros lenguajes de programación. La interfaz Map define las operaciones sobre un mapa.
Java tiene varias implementaciones de Map distintas. HashMap es una de las más usadas.
// Make an instance
Map<String, Integer> fruitPrices = new HashMap<>();
Añade entradas al mapa con put.
fruitPrices.put("apple", 100);
fruitPrices.put("pear", 80);
// => { "apple" => 100, "pear" => 80 }
Solo puede haber un valor asociado a cada clave.
Si llamas a put con la misma clave, se actualizará el valor de esa clave.
fruitPrices.put("pear", 40);
// => { "apple" => 100, "pear" => 40 }
Usa get para obtener el valor de una clave.
fruitPrices.get("apple"); // => 100
Usa containsKey para comprobar si el mapa contiene una clave concreta.
fruitPrices.containsKey("apple"); // => true
fruitPrices.containsKey("orange"); // => false
Elimina entradas con remove.
fruitPrices.put("plum", 90); // Add plum to map
fruitPrices.remove("plum"); // Removes plum from map
El método size devuelve el número de entradas.
fruitPrices.size(); // Returns 2
Puedes usar los métodos keySet o values para obtener las claves o los valores de un Map como un Set o una colección, respectivamente.
fruitPrices.keySet(); // Returns "apple" and "pear" in a set
fruitPrices.values(); // Returns 100 and 80, in a Collection
En este ejercicio escribirás código para gestionar un diccionario de códigos de marcado internacional usando un Map.
El diccionario permite buscar el nombre de un país (el valor del mapa, como String) por el código de marcado internacional (la clave del mapa, como Integer).
Implementa el método getCodes, que no recibe parámetros y devuelve un mapa con los códigos de marcado y sus países actualmente en el diccionario.
DialingCodes dialingCodes = new DialingCodes();
dialingCodes.getCodes();
// => empty map
Hay que rellenar el diccionario.
Implementa el método setDialingCode, que recibe un código de marcado y el país correspondiente y añade el código de marcado y el país.
Si el código de marcado ya está en el mapa, actualiza el mapa con el código y el país proporcionados.
DialingCodes dialingCodes = new DialingCodes();
dialingCodes.setDialingCode(679, "Unknown");
// => { 679 => "Unknown" }
dialingCodes.setDialingCode(679, "Fiji");
// => { 679 => "Fiji" }
Implementa el método getCountry, que recibe un código de marcado y devuelve el nombre del país correspondiente a ese código de marcado.
DialingCodes dialingCodes = new DialingCodes();
dialingCodes.setDialingCode(55, "Brazil");
dialingCodes.getCountry(55);
// => "Brazil"
Al añadir un código de marcado, hay que tener cuidado para evitar que un código o un país se añada dos veces.
En los casos en que esto ocurra, se puede suponer que la primera entrada es la correcta.
Implementa el método addNewDialingCode, que añade una entrada para el código de marcado y el país dados.
Sin embargo, a diferencia de setDialingCode, no hace nada si el código de marcado o el país ya están en el 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" }
Es poco frecuente, pero se pueden cometer errores.
Para corregir el error, necesitaremos saber a qué código de marcado está asignado actualmente el país.
Para saber qué código de marcado hay que corregir, implementa el método findDialingCode, que recibe un país y devuelve su código de marcado.
Devuelve null si el país no está en el mapa.
DialingCodes dialingCodes = new DialingCodes();
dialingCodes.addDialingCode(44, "UK");
dialingCodes.findDialingCode("UK");
// => 44
dialingCodes.findDialingCode("Unlisted");
// => null
Ahora que sabemos qué código de marcado hay que corregir, procedemos a actualizar el código.
Implementa el método updateCountryDialingCode, que recibe el nuevo código de marcado del país y el nombre del país y actualiza en consecuencia.
No hagas nada si el país no está en el mapa (ya que este método solo está pensado para ayudar a corregir errores).
DialingCodes dialingCodes = new DialingCodes();
dialingCodes.addDialingCode(88, "Japan");
// => { 88 => "Japan" }
dialingCodes.updateCountryDialingCode(81, "Japan");
// => { 81 => "Japan" }
dialingCodes.updateCountryDialingCode(32, "Mars");
// => { 81 => "Japan"}
Regístrate en Exercism para aprender y dominar Java con 26 conceptos158 ejercicios y mentoría humana real, todo gratis.