Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

تعديل القواميس

جزء من قسم Logic & Flow في رحلة Java على Coddy — الدرس 14 من 59.

تدعم الـ HashMaps أيضاً إزالة المفاتيح وتحديثها باستخدام الدوال put() و remove() و replace().

على سبيل المثال، دعونا نملأ HashMap أولاً:

HashMap<String, String> users = new HashMap<>();
users.put("alice", "Admin");
users.put("bob", "User");

لإزالة مفتاح:

users.remove("bob"); // يزيل "bob"
System.out.println(users);
// {alice=Admin}

لتحديث مفتاح:

users.replace("bob", "Guest");
// يحدّث bob إلى Guest

users.replace("Charlie", "Admin");
// لا يفعل شيئاً (المفتاح "Charlie" غير موجود)
challenge icon

التحدي

سهل

اكتب طريقة (method) تسمى <strong>modifyMap</strong> تقوم بتعديل HashMap معطى بناءً على شروط محددة.

  1. تأخذ HashMap يسمى data حيث:
    • المفاتيح من نوع String.
    • القيم من نوع Integer.
  2. تأخذ String key.
  3. تأخذ Integer newValue.

يجب أن تعيد الطريقة الـ HashMap المحدث باتباع ما يلي:

  • إذا كان المفتاح موجوداً في data وله نفس قيمة newValue، استخدم <strong>replace()</strong> ولكن قم بزيادة القيمة بمقدار 1.
  • إذا كان المفتاح موجوداً ولكن له قيمة مختلفة، قم بإزالته.
  • إذا لم يكن المفتاح موجوداً، قم بإضافته مع <strong>newValue</strong>.

ورقة مرجعية

طرق HashMap لتعديل البيانات:

إزالة مفتاح:

users.remove("bob"); // يزيل زوج المفتاح والقيمة لـ "bob"

تحديث/استبدال قيمة:

users.replace("alice", "Guest"); // يحدّث المفتاح الموجود
users.replace("nonexistent", "Admin"); // لا يفعل شيئاً إذا لم يكن المفتاح موجوداً

إضافة أو تحديث مفتاح:

users.put("newUser", "Admin"); // يضيف مفتاحاً جديداً أو يحدّث المفتاح الموجود

جرّب بنفسك

// --- وحدات لتحويل سلسلة نصية لـ hashmap إلى hashmap ---
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import java.lang.reflect.Type;
// -----------------------------
import java.util.HashMap;
import java.util.Scanner;

public class Main {
    public static HashMap<String, Integer> modifyMap(HashMap<String, Integer> data, String key, int newValue) {
        // اكتب كودك هنا
    }

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String hashMapString = scanner.nextLine();
        String key = scanner.nextLine();
        int newValue = scanner.nextInt();

        // تحويل سلسلة نصية لـ HashMap إلى HashMap
        Type mapType = new TypeToken<HashMap<String, Integer>>(){}.getType();
        HashMap<String, Integer> data = new Gson().fromJson(hashMapString, mapType);

        HashMap<String, Integer> result = modifyMap(data, key, newValue);
        System.out.println(new Gson().toJson(result));
    }
}
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس Logic & Flow