تعديل القواميس
جزء من قسم 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" غير موجود)التحدي
سهلاكتب طريقة (method) تسمى <strong>modifyMap</strong> تقوم بتعديل HashMap معطى بناءً على شروط محددة.
- تأخذ HashMap يسمى
dataحيث:- المفاتيح من نوع
String. - القيم من نوع
Integer.
- المفاتيح من نوع
- تأخذ String
key. - تأخذ 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));
}
}
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس Logic & Flow
1المصفوفات متعددة الأبعاد
أساسيات المصفوفات ثنائية الأبعادالوصول إلى عناصر المصفوفات ثنائية الأبعادالحلقات المتداخلة مع المصفوفات ثنائية الأبعادمراجعة - المصفوفات ثنائية الأبعادجمع وطرح المصفوفاتالمصفوفات المتعرجة (Jagged Arrays)المصفوفات ثلاثية الأبعاد وما بعدهاأنماط المصفوفات ثنائية الأبعاد الشائعةمراجعة - كل شيء عن المصفوفات2HashMap الجزء الأول
ما هو الـ HashMap؟تعريف الـ HashMapالوصول إلى القيمالتحقق من وجود المفتاحتعديل القواميسملخص - HashMap3HashMap الجزء الثاني
دوال HashMapالتكرار باستخدام keySet()التكرار باستخدام entrySet()HashMap متداخلمراجعة - إدارة المستودعمراجعة - عمليات HashMap6التحكم المتقدم في تدفق البرنامج
العبارات المعنونةتعبير Switchمطابقة الأنماطجمل الحمايةمراجعة - تدفق التحكم