Διαδρομές
/
Java
Java
/
Ασκήσεις
/
Γνώστης διεθνών κλήσεων
Γνώστης διεθνών κλήσεων

Γνώστης διεθνών κλήσεων

Άσκηση εκμάθησης

Εισαγωγή

Map

Ένας Map είναι μια δομή δεδομένων για την αποθήκευση ζευγών κλειδιού-τιμής. Μοιάζει με τα λεξικά άλλων γλωσσών προγραμματισμού. Η διεπαφή Map ορίζει τις λειτουργίες πάνω σε έναν map.

Η Java έχει αρκετές διαφορετικές υλοποιήσεις του Map. Το HashMap είναι μία από τις πιο συνηθισμένες.

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

Πρόσθεσε καταχωρήσεις στον map χρησιμοποιώντας τη μέθοδο put.

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

Μόνο μία τιμή μπορεί να συσχετιστεί με κάθε κλειδί. Η κλήση της put με το ίδιο κλειδί θα ενημερώσει την τιμή του κλειδιού.

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

Χρησιμοποίησε τη get για να πάρεις την τιμή ενός κλειδιού.

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

Χρησιμοποίησε τη containsKey για να δεις αν ο map περιέχει ένα συγκεκριμένο κλειδί.

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

Αφαίρεσε καταχωρήσεις με τη remove.

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

Η μέθοδος size επιστρέφει τον αριθμό των καταχωρήσεων.

fruitPrices.size();  // Returns 2

Μπορείς να χρησιμοποιήσεις τις μεθόδους keySet ή values για να πάρεις τα κλειδιά ή τις τιμές ενός Map ως Set ή συλλογή αντίστοιχα.

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

Οδηγίες

Σε αυτή την άσκηση θα γράφεις κώδικα για να διαχειρίζεσαι ένα λεξικό με διεθνείς κωδικούς κλήσης χρησιμοποιώντας ένα Map.

Το λεξικό επιτρέπει την αναζήτηση του ονόματος μιας χώρας (της τιμής του Map, ως String) μέσω του διεθνούς κωδικού κλήσης (του κλειδιού του Map, ως Integer).

1. Επίστρεψε τους κωδικούς σε ένα Map

Υλοποίησε τη μέθοδο getCodes που δε δέχεται παραμέτρους και επιστρέφει ένα Map με τους κωδικούς κλήσης και τις αντίστοιχες χώρες που βρίσκονται αυτή τη στιγμή στο λεξικό.

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

2. Πρόσθεσε καταχωρίσεις στο λεξικό

Το λεξικό πρέπει να γεμίσει με δεδομένα. Υλοποίησε τη μέθοδο setDialingCode που δέχεται έναν κωδικό κλήσης και την αντίστοιχη χώρα και προσθέτει τον κωδικό κλήσης και τη χώρα. Αν ο κωδικός κλήσης υπάρχει ήδη στο Map, ενημέρωσε το Map με τον κωδικό και τη χώρα που δίνονται.

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

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

3. Βρες τη χώρα ενός κωδικού κλήσης

Υλοποίησε τη μέθοδο getCountry που δέχεται έναν κωδικό κλήσης και επιστρέφει το όνομα της χώρας με αυτόν τον κωδικό κλήσης.

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

4. Μην επιτρέπεις διπλότυπα

Όταν προσθέτεις έναν κωδικό κλήσης, πρέπει να προσέξεις ώστε να μην προστεθεί δύο φορές ένας κωδικός ή μια χώρα. Σε τέτοιες περιπτώσεις, μπορείς να υποθέσεις ότι η πρώτη καταχώριση είναι η σωστή. Υλοποίησε τη μέθοδο addNewDialingCode που προσθέτει μια καταχώριση για τον δεδομένο κωδικό κλήσης και τη χώρα. Ωστόσο, σε αντίθεση με τη setDialingCode, δε κάνει τίποτα αν ο κωδικός κλήσης ή η χώρα υπάρχουν ήδη στο 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. Βρες τον κωδικό κλήσης μιας χώρας

Είναι σπάνιο, αλλά μπορούν να γίνουν λάθη. Για να διορθώσουμε το λάθος, θα χρειαστεί να ξέρουμε σε ποιον κωδικό κλήσης αντιστοιχίζεται αυτή τη στιγμή η χώρα. Για να βρεις ποιος κωδικός κλήσης πρέπει να διορθωθεί, υλοποίησε τη μέθοδο findDialingCode που δέχεται μια χώρα και επιστρέφει τον κωδικό κλήσης της χώρας. Επίστρεψε null αν η χώρα δεν βρίσκεται στο Map.

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

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

6. Ενημέρωσε τον κωδικό κλήσης της χώρας

Τώρα που ξέρουμε ποιος κωδικός κλήσης πρέπει να διορθωθεί, προχωράμε στην ενημέρωση του κωδικού. Υλοποίησε τη μέθοδο updateCountryDialingCode που δέχεται τον νέο κωδικό κλήσης της χώρας και το όνομα της χώρας και ενημερώνει ανάλογα. Μην κάνεις τίποτα αν η χώρα δεν βρίσκεται στο Map (καθώς αυτή η μέθοδος προορίζεται μόνο για τη διόρθωση λαθών).

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

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

dialingCodes.updateCountryDialingCode(32, "Mars");
// => { 81 => "Japan"}
Επεξεργασία μέσω GitHub Ο σύνδεσμος ανοίγει σε νέο παράθυρο ή καρτέλα
Java Exercism

Έτοιμος να ξεκινήσεις την άσκηση Γνώστης διεθνών κλήσεων;

Γράψου στο Exercism για να μάθεις και να κατακτήσεις Java με 26 έννοιες158 ασκήσεις και πραγματική καθοδήγηση από ανθρώπους, όλα δωρεάν.