コース一覧
    Java入門:配列とコレクション
    HashMap の基本

    Java入門:配列とコレクション

    配列とコレクションの扱いを学び、複数のデータを安全に整理・検索・集計できるようにします。

    1
    配列
    01. 配列の基本5分
    02. 配列の要素にアクセス5分
    03. 配列を for で走査5分
    04. Javaで配列の合計・平均を求める方法(forループ)5分
    05. 配列の平均5分
    06. 配列の最大値5分
    07. 配列の線形探索12分
    08. 拡張 for ループ5分
    09. 配列クイズ5分
    10. 第 6 章 まとめクイズ5分
    2
    コレクション基礎
    01. ArrayList を使う5分
    02. List を走査する5分
    03. 要素の削除と検索5分
    04. HashMap の基本5分
    05. Map を走査する5分
    06. Set で重複を排除5分
    07. Collections クラスの便利メソッド5分
    08. コレクション基礎 まとめクイズ5分

    HashMap の基本

    名前で引きたいのに、端から順に見ている

    商品名から価格を出す処理を List だけで書くと、こうなります。

    Java

    for (Item item : items) {
        if (item.getName().equals("鉛筆")) {
            return item.getPrice();
        }
    }

    1 件目で見つかることもあれば、最後まで見て見つからないこともあります。10 件なら気になりませんが、1 万件なら 1 万回の比較です。そもそも書きたかったのは鉛筆の値段であって、探す手順ではありません。

    java.util.HashMap は、キーから値へ一発で飛ぶための入れ物です。辞書を先頭から読まずに見出しから引くのと同じで、件数が増えても取り出す速さがほとんど変わりません。

    put で入れて、get で引く

    Java

    import java.util.HashMap;
    import java.util.Map;
    
    public class Demo {
        public static void main(String[] args) {
            Map<String, String> capitals = new HashMap<>();
            capitals.put("日本", "東京");
            capitals.put("フランス", "パリ");
    
            System.out.println(capitals.get("日本"));            // 東京
            System.out.println(capitals.containsKey("ドイツ"));  // false
            System.out.println(capitals.size());                // 2
        }
    }

    Map<K, V> の山かっこは 2 つで、前がキーの型、後ろが値の型です。変数の型は HashMap ではなく Map にしておくのが一般的で、あとから別の実装に替えやすくなります。同じキーで 2 回 put すると、あとから入れた値で上書きされます。

    無いキーを引くと null が返ってくる

    get は、キーが無くても例外を投げずに null を返します。値が数値のときは、これが NullPointerException の入り口になります。

    Java

    Map<String, Integer> stock = new HashMap<>();
    stock.put("鉛筆", 30);
    
    int n = stock.get("消しゴム");  // null を int に変換できず落ちる

    Integer のまま受け取れば例外は出ませんが、そのあとの計算で結局つまずきます。防ぎ方は 2 つあり、containsKey で先に確かめてから get するか、getOrDefault で無かったときの値をその場で渡すかです。

    Java

    String city = capitals.getOrDefault("ドイツ", "不明");  // 不明

    getOrDefault はキーがあればその値を、無ければ第 2 引数をそのまま返します。分岐を書かずに済むので、既定値が決まっている場面ではこちらが読みやすくなります。

    課題では、登録していない商品名を渡されたときに決まった値を返します。どちらの書き方でも通りますが、行数は getOrDefault のほうが短くなります。

    要件

    1. クラス名は Solution、メソッド名は priceOf、引数は String item、戻り値の型は int
    2. メソッド内で HashMap<String, Integer> を作り、"apple" → 100、"banana" → 80、"cherry" → 200 の 3 件を put する
    3. 存在するキーならその価格を返し、存在しないキーには必ず -1 を返すこと

    ヒント

    `import java.util.HashMap;` と `import java.util.Map;` を忘れずに書きましょう

    `getOrDefault(item, -1)` を使えば、存在しないキーへの対応を 1 行で書けます

    `getOrDefault` を使わない場合は、`if (prices.containsKey(item))` で分岐して、存在するときだけ `prices.get(item)` を返す書き方でも構いません

    生田 陸人
    監修生田 陸人
    ゆめさくエンジニア / 現役ソフトウェアエンジニア監修者プロフィールを見る →
    編集 ゆめさく編集部·公開 2026/05/19·更新 2026/08/26

    関連レッスン

    • Map を走査する

      Map をキーと値のペアでループする方法を学ぼう。entrySet / keySet / values の使い分けと、順序を保証する LinkedHashMap の使い方まで身につける。

    • Set で重複を排除

      Java の Set を使って、コレクションから重複した要素を取り除く方法を学びます。HashSet と LinkedHashSet と TreeSet の違い、Set ならではの API を整理しよう。

    • Collections クラスの便利メソッド

      java.util.Collections の sort / max / min / reverse / shuffle を使いこなして、List を自由自在に操作しよう。

    • コレクション基礎 まとめクイズ

      コレクション基礎 (List / Map / Set / Collections) の総まとめ。使い分けと内部の仕組みを 4 択クイズで確認する。

    このレッスンに出てくる用語

    意味があいまいなまま進んだ語は、ここから読み直せます。

    • 処理計算や代入を表す長方形
    • 変数データに名前をつけて参照する仕組み
    • 引数位置引数=順番で渡す。
    • クラスデータと振る舞いを束ねる単位
    • メソッドクラスに属する関数
    • 戻り値呼び出し元への返答を表す点線矢印
    main.java
    エディタを読み込んでいます

    メモ

    HashMap の基本

    ⌘S で保存