Menu
Coddy logo textTech

復習 - HashMap 操作

CoddyのJavaジャーニー「ロジックとフロー」セクションの一部。レッスン 21/59。

challenge icon

チャレンジ

簡単

<strong>processHashMap</strong>という名前のメソッドを作成します。このメソッドは1つの引数を受け取ります:

  1. <strong>products</strong>という名前のHashMap。内容は以下のとおりです:
    • キー商品名String)を表します。
    • 価格Double)を表します。

実行する操作

  1. 価格が最も高い商品を見つけます。
    • 複数の商品が同じ最高価格である場合は、そのうち任意の1つを返します。
    • HashMapが空の場合は、空の文字列("")を返します。
  2. 価格が<strong>50.00</strong>を超える商品をフィルタリングし、新しいHashMapに格納します。
  3. すべての商品の平均価格を計算します。
    • HashMapが空の場合、平均は0.0とします。

戻り値の形式

このメソッドは、以下のキーと値のペアを持つ新しいHashMapを返します:

キー
"Highest"価格が最も高い商品の名前(String)。
"Filtered"50.00を超える価格の商品だけを含むHashMap(HashMap<String, Double>)。
"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オンラインコンパイラ