مسیرها
/
Java
Java
/
تمرین‌ها
/
خبره‌ی تماس‌های بین‌المللی
خبره‌ی تماس‌های بین‌المللی

خبره‌ی تماس‌های بین‌المللی

تمرین یادگیری

مقدمه

Maps

Map یک ساختار داده برای نگهداری جفت‌های کلید-مقدار است. این ساختار داده شبیه دیکشنری‌ها در زبان‌های برنامه‌نویسی دیگر است. اینترفیس Map عملیات روی یک Map را تعریف می‌کند.

Java چندین پیاده‌سازی مختلف Map دارد. HashMap یکی از پرکاربردترین آن‌هاست.

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

با استفاده از put عضوهایی به Map اضافه کنید.

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

برای اینکه ببینید Map کلید خاصی را در خود دارد یا نه، از containsKey استفاده کنید.

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 یا یک Collection به دست آورید.

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 را پیاده‌سازی کنید که یک کشور می‌گیرد و کد تلفن آن کشور را برمی‌گرداند. اگر کشور در Map نباشد، null را برگردانید.

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 تمرین و مربی‌گری انسانی واقعی یاد بگیرید و در آن استاد شوید، همه‌ی این‌ها رایگان.