復習 - HashMap 操作
CoddyのJavaジャーニー「ロジックとフロー」セクションの一部。レッスン 21/59。
チャレンジ
簡単<strong>processHashMap</strong>という名前のメソッドを作成します。このメソッドは1つの引数を受け取ります:
<strong>products</strong>という名前のHashMap。内容は以下のとおりです:- キーは商品名(
String)を表します。 - 値は価格(
Double)を表します。
- キーは商品名(
実行する操作
- 価格が最も高い商品を見つけます。
- 複数の商品が同じ最高価格である場合は、そのうち任意の1つを返します。
- HashMapが空の場合は、空の文字列(
"")を返します。
- 価格が
<strong>50.00</strong>を超える商品をフィルタリングし、新しいHashMapに格納します。 - すべての商品の平均価格を計算します。
- HashMapが空の場合、平均は
0.0とします。
- HashMapが空の場合、平均は
戻り値の形式
このメソッドは、以下のキーと値のペアを持つ新しい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);
}
}ロジックとフローのすべてのレッスン
3HashMap 第2部
HashMap のメソッドkeySet() を使用したイテレーションentrySet() を使用したイテレーションネストした HashMap復習 - 倉庫管理復習 - HashMap 操作自分で練習してみよう: Javaオンラインコンパイラ