Menu
CoddyTech

回顾:HashMap 操作

本课属于 Coddy Java 学习旅程的“逻辑与流程”单元。第 21 课,共 59 课。

challenge icon

挑战

简单

创建一个名为 processHashMap 的方法,它接受一个参数:

  1. 一个名为 products 的 HashMap,其中:
    • 键表示产品名称(String)。
    • 值表示价格(Double)。

要执行的操作

  1. 找出价格最高的产品。
    • 如果多个产品的价格都是最高价,返回其中任意一个。
    • 如果 HashMap 为空,返回空字符串("")。
  2. 筛选出价格大于 50.00 的产品,并将它们存入一个新的 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 在线编译器