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

مراجعة - عمليات HashMap

جزء من قسم المنطق وتدفق التنفيذ في رحلة Java على Coddy. الدرس 21 من 59.

challenge icon

التحدي

سهل

أنشئ method باسم <strong>processHashMap</strong> يأخذ وسيطًا واحدًا:

  1. ‏HashMap باسم <strong>products</strong> حيث:
    • المفاتيح تمثل أسماء المنتجات (String).
    • القيم تمثل الأسعار (Double).

العمليات المطلوب تنفيذها

  1. اعثر على المنتج ذي السعر الأعلى.
    • إذا كان لدى عدة منتجات السعر الأعلى نفسه، فأعد أيًّا منها.
    • إذا كان ‏HashMap فارغًا، فأعد سلسلة نصية فارغة ("").
  2. صفِّ المنتجات التي يزيد سعرها عن <strong>50.00</strong> وخزّنها في ‏HashMap جديد.
  3. احسب متوسط أسعار جميع المنتجات.
    • إذا كان ‏HashMap فارغًا، فيجب أن يكون المتوسط 0.0.

تنسيق الإرجاع

يجب أن تُرجع method ‏‏HashMap جديدًا يتضمن أزواج المفتاح والقيمة التالية:

المفتاحالقيمة
"Highest"اسم المنتج ذي السعر الأعلى (String).
"Filtered"‏HashMap ‏(HashMap<String, Double>) يحتوي فقط على المنتجات التي تزيد أسعارها عن 50.00.
"Average"متوسط أسعار جميع المنتجات (Double).

جرّب بنفسك

import java.util.LinkedHashMap;
import java.util.HashMap;
import java.util.Map;
import java.util.stream.Collectors;
import java.util.Scanner;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import java.lang.reflect.Type;

public class Main {
    public static HashMap<String, Object> processHashMap(HashMap<String, Double> products) {
        // اكتب الكود الخاص بك هنا
    }

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String productsString = scanner.nextLine();

        // تحويل سلسلة JSON إلى HashMap
        Type mapType = new TypeToken<HashMap<String, Double>>(){}.getType();
        HashMap<String, Double> products = new Gson().fromJson(productsString, mapType);

        HashMap<String, Object> result = processHashMap(products);

        // فرز خريطة Filtered لضمان إخراج متسق
        Map<String, Double> filteredMap = (Map<String, Double>) result.get("Filtered");
        if (filteredMap != null && !filteredMap.isEmpty()) {
            Map<String, Double> sortedFiltered = filteredMap.entrySet().stream()
                .sorted(Map.Entry.comparingByKey())
                .collect(Collectors.toMap(
                    Map.Entry::getKey,
                    Map.Entry::getValue,
                    (a, b) -> b,
                    LinkedHashMap::new
                ));
            result.put("Filtered", sortedFiltered);
        }
        
        System.out.println(result);
    }
}

جميع دروس المنطق وتدفق التنفيذ

تدرّب بنفسك: مترجم Java عبر الإنترنت