Map修羅道:Step04

0003_Map修羅道-step04 learn

📌 まずは問題を見ろ

→ javadrill.tech で出題された問題を見る(Step04)


問題のポイント

  • Map<String, Integer> を使って、文字列の出現回数を数える基本パターン
  • containsKey() で存在チェック → put() で +1
  • または getOrDefault() を使って初期値をうまく扱う

まず、日本語で考えろ

  • リストに入ってるのは、注文された商品の名前。
  • 「apple」が3回、「banana」が2回、「orange」が1回。
  • つまり、「文字列の出現回数を数えて出す」だけ
  • でも、Map に慣れてないと、ここで手が止まる。

コメントを書け

“`java
// 商品名のリストを作る
// 空のMapを用意する(キー: 商品名、値: 出現回数)
// リストをループして、出現回数を1つずつ増やす
// Mapの中身を出力する


コメントに従ってコードを書け

import java.util.*;

public class MapUtil {
    public static void countOrders() {
        // 商品名のリストを作る
        List<String> orders = Arrays.asList(
            "apple", "banana", "apple", "orange", "banana", "apple"
        );

        // 空のMapを用意する(キー: 商品名、値: 出現回数)
        Map<String, Integer> countMap = new HashMap<>();

        // リストをループして、出現回数を1つずつ増やす
        for (String item : orders) {
            int current = countMap.getOrDefault(item, 0);
            countMap.put(item, current + 1);
        }

        // Mapの中身を出力する
        for (Map.Entry<String, Integer> entry : countMap.entrySet()) {
            System.out.println(entry.getKey() + " → " + entry.getValue());
        }
    }
}

実行結果の例(順不同)

apple → 3  
banana → 2  
orange → 1  

コードの解説

  • 最初に注文一覧を List<String> で用意。
  • Map<String, Integer> を使って、出現回数をカウント。
  • getOrDefault(key, 0) で、初期値0から +1 して put()
  • 最終的に、Map に商品名とその個数が入る。

つまづきやすいポイント

  • 最初から Map にキーがあるとは限らない。ない場合は初期値1を入れる発想が大事
  • containsKey() で分岐してもよいが、getOrDefault() を使えばスッキリ書ける
  • Stream API を使えばもっと短くなるけど、今は書いて理解することが目的。慣れるまでは for 文で回せ。

teshのひとこと

「カウント処理」──これはMapが一番力を発揮する基本中の基本。
それなのに、つまずくやつが多いのは、“ない” という状態を想定できてないからや。

最初はゼロ。そこから足す。
あたりまえの処理こそ、Mapで“確かに”書けるようになれ。


Just keep typing, baby.
「ない」ことを想定しろ。コードに、ゼロから始める覚悟を刻め。


👉 Map修羅道:全体のステップ構成はこちら