Menu
Coddy logo textTech

סיכום – פעולות HashMap

חלק מהיחידה לוגיקה וזרימת תוכנית במסלול ה-Java של Coddy. שיעור 21 מתוך 59.

challenge icon

אתגר

קל

צרו מתודה בשם <strong>processHashMap</strong> שמקבלת ארגומנט אחד:

  1. HashMap בשם <strong>products</strong> שבו:
    • המפתחות מייצגים שמות של מוצרים (String).
    • הערכים מייצגים מחירים (Double).

פעולות לביצוע

  1. מצאו את המוצר שמחירו הוא הגבוה ביותר.
    • אם לכמה מוצרים יש אותו מחיר מרבי, החזירו אחד מהם.
    • אם ה-HashMap ריק, החזירו מחרוזת ריקה ("").
  2. סננו מוצרים שמחירם גבוה מ-<strong>50.00</strong> ואחסנו אותם ב-HashMap חדש.
  3. חשבו את המחיר הממוצע של כל המוצרים.
    • אם ה-HashMap ריק, הממוצע צריך להיות 0.0.

פורמט ההחזרה

על המתודה להחזיר 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 אונליין