MapUtil.java
import java.util.*;
public class MapUtil {
public static void runOrderSimulator() {
// 商品ごとの単価を保持するMap
Map<String, Integer> priceMap = new HashMap<>();
priceMap.put("Apple", 120);
priceMap.put("Banana", 80);
priceMap.put("Orange", 100);
// 注文数を保持するMap
Map<String, Integer> orderMap = new HashMap<>();
orderMap.put("Apple", 3);
orderMap.put("Banana", 5);
orderMap.put("Grape", 2); // 登録されていない商品
int total = 0; // 総売上金額
// 注文Mapをループ
for (String product : orderMap.keySet()) {
int quantity = orderMap.get(product);
// 商品が登録されているかチェック
if (priceMap.containsKey(product)) {
int price = priceMap.get(product);
int subtotal = price * quantity;
// 明細を出力
System.out.println(product + " → 単価: " + price + "円, 個数: " + quantity + ", 小計: " + subtotal + "円");
// 総計に加算
total += subtotal;
} else {
// 商品が見つからない場合はエラー表示
System.out.println("エラー: 商品 '" + product + "' は未登録です。");
}
}
// 総売上を出力
System.out.println("総売上: " + total + "円");
}
}
解説:Mapを使って注文処理を実装する
このステップでは、これまで学んだMap操作を総動員して、実践的な処理を構築します。
ポイントとなる処理
- 価格と注文数という「別のMap」を対応させる
orderMap
をループして、各商品名に対してpriceMap
で単価を参照します。 containsKey()
を使って、存在しない商品をチェック
未登録商品(例:”Grape”)は、エラーとして出力し、集計対象に含めません。- 各商品の小計(単価 × 数量)を計算し、逐次表示
最後に総売上を合計・出力します。
実行結果の例
Apple → 単価: 120円, 個数: 3, 小計: 360円
Banana → 単価: 80円, 個数: 5, 小計: 400円
エラー: 商品 'Grape' は未登録です。
総売上: 760円
まとめ
- Mapの組み合わせ(priceMap × orderMap)を自在に使えること
containsKey()
による存在チェックの重要性- 条件分岐とループ処理の組み合わせが自然に書けるか
このFinalステップを自力で書き切れたなら、Mapの基本操作は一通りマスターしたと言って良い。
これでMapにビビることは、もうない。。