A Map olyan adatstruktúra, amely kulcs-érték párokat tárol. Hasonló a szótárhoz más programozási nyelvekben. A Map interfész határozza meg a mapon végezhető műveleteket.
A Java számos különböző Map-implementációval rendelkezik. A HashMap az egyik gyakran használt közülük.
// Make an instance
Map<String, Integer> fruitPrices = new HashMap<>();
A maphoz a put segítségével adhatsz hozzá bejegyzéseket.
fruitPrices.put("apple", 100);
fruitPrices.put("pear", 80);
// => { "apple" => 100, "pear" => 80 }
Minden kulcshoz csak egyetlen érték tartozhat.
Ha ugyanazzal a kulccsal hívod meg a put metódust, az frissíti a kulcs értékét.
fruitPrices.put("pear", 40);
// => { "apple" => 100, "pear" => 40 }
Egy kulcs értékét a get segítségével kérheted le.
fruitPrices.get("apple"); // => 100
A containsKey segítségével megnézheted, hogy a map tartalmaz-e egy adott kulcsot.
fruitPrices.containsKey("apple"); // => true
fruitPrices.containsKey("orange"); // => false
A remove segítségével távolíthatsz el bejegyzéseket.
fruitPrices.put("plum", 90); // Add plum to map
fruitPrices.remove("plum"); // Removes plum from map
A size metódus a bejegyzések számát adja vissza.
fruitPrices.size(); // Returns 2
A keySet és a values metódussal a Map kulcsait, illetve értékeit kérheted le egy Set, illetve egy gyűjtemény formájában.
fruitPrices.keySet(); // Returns "apple" and "pear" in a set
fruitPrices.values(); // Returns 100 and 80, in a Collection
Ebben a feladatban egy nemzetközi hívószámokat tartalmazó szótár kezeléséhez írsz kódot, egy Map segítségével.
A szótár lehetővé teszi, hogy a nemzetközi hívószám (a map kulcsa, Integerként) alapján kikeresd egy ország nevét (a map értéke, Stringként).
Valósítsd meg a getCodes metódust, amely nem vesz át paramétert, és visszaadja a szótárban jelenleg szereplő hívószámokat és országokat tartalmazó mapet.
DialingCodes dialingCodes = new DialingCodes();
dialingCodes.getCodes();
// => empty map
A szótárt fel kell tölteni tartalommal.
Valósítsd meg a setDialingCode metódust, amely átvesz egy hívószámot és a hozzá tartozó országot, majd hozzáadja a hívószámot és az országot.
Ha a hívószám már szerepel a mapben, frissítsd a mapet a megadott hívószámmal és országgal.
DialingCodes dialingCodes = new DialingCodes();
dialingCodes.setDialingCode(679, "Unknown");
// => { 679 => "Unknown" }
dialingCodes.setDialingCode(679, "Fiji");
// => { 679 => "Fiji" }
Valósítsd meg a getCountry metódust, amely átvesz egy hívószámot, és visszaadja a hívószámhoz tartozó ország nevét.
DialingCodes dialingCodes = new DialingCodes();
dialingCodes.setDialingCode(55, "Brazil");
dialingCodes.getCountry(55);
// => "Brazil"
Amikor hívószámot adsz hozzá, ügyelni kell arra, hogy se egy hívószám, se egy ország ne kerülhessen be kétszer.
Ha ez mégis megtörténik, feltételezhetjük, hogy az első bejegyzés a helyes.
Valósítsd meg az addNewDialingCode metódust, amely bejegyzést ad hozzá a megadott hívószámhoz és országhoz.
A setDialingCode metódustól eltérően azonban nem tesz semmit, ha a hívószám vagy az ország már szerepel a mapben.
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" }
Ritkán fordul elő, de előfordulhatnak hibák.
A hiba kijavításához tudnunk kell, hogy az ország jelenleg melyik hívószámhoz van rendelve.
Hogy megtaláld, melyik hívószámot kell kijavítani, valósítsd meg a findDialingCode metódust, amely átvesz egy országot, és visszaadja az ország hívószámát.
Ha az ország nincs benne a mapben, adj vissza null értéket.
DialingCodes dialingCodes = new DialingCodes();
dialingCodes.addDialingCode(44, "UK");
dialingCodes.findDialingCode("UK");
// => 44
dialingCodes.findDialingCode("Unlisted");
// => null
Most, hogy tudjuk, melyik hívószámot kell kijavítani, nekiláthatunk a frissítésnek.
Valósítsd meg az updateCountryDialingCode metódust, amely átveszi az ország új hívószámát és az ország nevét, és ennek megfelelően frissít.
Ha az ország nincs benne a mapben, ne tégy semmit (mivel ez a metódus csak a hibák kijavításában segít).
DialingCodes dialingCodes = new DialingCodes();
dialingCodes.addDialingCode(88, "Japan");
// => { 88 => "Japan" }
dialingCodes.updateCountryDialingCode(81, "Japan");
// => { 81 => "Japan" }
dialingCodes.updateCountryDialingCode(32, "Mars");
// => { 81 => "Japan"}
Iratkozz fel az Exercism-re, hogy megtanuld és elsajátítsd a(z) Java nyelvet 26 fogalom158 feladat segítségével, valódi emberi mentorálással, mindez ingyen.