Eine Map ist eine Datenstruktur zum Speichern von Schlüssel-Wert-Paaren. Sie ähnelt Wörterbüchern in anderen Programmiersprachen. Das Map-Interface definiert die Operationen auf einer Map.
Java hat eine Reihe verschiedener Map-Implementierungen. HashMap ist eine häufig verwendete.
// Make an instance
Map<String, Integer> fruitPrices = new HashMap<>();
Füge mit put Einträge zur Map hinzu.
fruitPrices.put("apple", 100);
fruitPrices.put("pear", 80);
// => { "apple" => 100, "pear" => 80 }
Mit jedem Schlüssel kann nur ein Wert verknüpft sein.
Wenn du put mit demselben Schlüssel aufrufst, wird der Wert des Schlüssels aktualisiert.
fruitPrices.put("pear", 40);
// => { "apple" => 100, "pear" => 40 }
Mit get ermittelst du den Wert zu einem Schlüssel.
fruitPrices.get("apple"); // => 100
Mit containsKey prüfst du, ob die Map einen bestimmten Schlüssel enthält.
fruitPrices.containsKey("apple"); // => true
fruitPrices.containsKey("orange"); // => false
Entferne Einträge mit remove.
fruitPrices.put("plum", 90); // Add plum to map
fruitPrices.remove("plum"); // Removes plum from map
Die Methode size gibt die Anzahl der Einträge zurück.
fruitPrices.size(); // Returns 2
Mit den Methoden keySet oder values kannst du die Schlüssel bzw. die Werte einer Map als Set oder Collection abrufen.
fruitPrices.keySet(); // Returns "apple" and "pear" in a set
fruitPrices.values(); // Returns 100 and 80, in a Collection
In dieser Übung schreibst du Code, um ein Wörterbuch internationaler Vorwahlen mit einer Map zu verwalten.
Das Wörterbuch ermöglicht es, den Namen eines Landes (den Wert der Map, als String) über die internationale Vorwahl (den Schlüssel der Map, als Integer) nachzuschlagen.
Implementiere die Methode getCodes, die keine Parameter entgegennimmt und eine Map zurückgibt, die die aktuell im Wörterbuch enthaltenen Vorwahlen auf Länder abbildet.
DialingCodes dialingCodes = new DialingCodes();
dialingCodes.getCodes();
// => empty map
Das Wörterbuch muss befüllt werden.
Implementiere die Methode setDialingCode, die eine Vorwahl und das zugehörige Land entgegennimmt und die Vorwahl und das Land hinzufügt.
Wenn die Vorwahl bereits in der Map vorhanden ist, aktualisiere die Map mit der angegebenen Vorwahl und dem angegebenen Land.
DialingCodes dialingCodes = new DialingCodes();
dialingCodes.setDialingCode(679, "Unknown");
// => { 679 => "Unknown" }
dialingCodes.setDialingCode(679, "Fiji");
// => { 679 => "Fiji" }
Implementiere die Methode getCountry, die eine Vorwahl entgegennimmt und den Ländernamen zu dieser Vorwahl zurückgibt.
DialingCodes dialingCodes = new DialingCodes();
dialingCodes.setDialingCode(55, "Brazil");
dialingCodes.getCountry(55);
// => "Brazil"
Beim Hinzufügen einer Vorwahl musst du darauf achten, dass weder eine Vorwahl noch ein Land zweimal hinzugefügt wird.
Wenn das doch passiert, kannst du davon ausgehen, dass der erste Eintrag der richtige ist.
Implementiere die Methode addNewDialingCode, die einen Eintrag für die angegebene Vorwahl und das angegebene Land hinzufügt.
Anders als setDialingCode tut sie jedoch nichts, wenn die Vorwahl oder das Land bereits in der Map vorhanden ist.
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" }
Das kommt selten vor, aber Fehler passieren.
Um den Fehler zu korrigieren, müssen wir wissen, welche Vorwahl dem Land aktuell zugeordnet ist.
Um herauszufinden, welche Vorwahl korrigiert werden muss, implementiere die Methode findDialingCode, die ein Land entgegennimmt und die Vorwahl des Landes zurückgibt.
Gib null zurück, wenn das Land nicht in der Map vorhanden ist.
DialingCodes dialingCodes = new DialingCodes();
dialingCodes.addDialingCode(44, "UK");
dialingCodes.findDialingCode("UK");
// => 44
dialingCodes.findDialingCode("Unlisted");
// => null
Jetzt, wo wir wissen, welche Vorwahl korrigiert werden muss, aktualisieren wir die Vorwahl.
Implementiere die Methode updateCountryDialingCode, die die neue Vorwahl des Landes und den Namen des Landes entgegennimmt und die Map entsprechend aktualisiert.
Tue nichts, wenn das Land nicht in der Map vorhanden ist (diese Methode soll schließlich nur helfen, Fehler zu korrigieren).
DialingCodes dialingCodes = new DialingCodes();
dialingCodes.addDialingCode(88, "Japan");
// => { 88 => "Japan" }
dialingCodes.updateCountryDialingCode(81, "Japan");
// => { 81 => "Japan" }
dialingCodes.updateCountryDialingCode(32, "Mars");
// => { 81 => "Japan"}
Melde dich bei Exercism an, um Java mit 26 Konzepte158 Übungen und echtem menschlichen Mentoring zu lernen und zu meistern, alles kostenlos.