1. apple の価格は 100
  2. banana の価格は 80
  3. cherry の価格は 200
  4. 存在しないキー kiwi は -1
  5. 空文字も存在しないキーなので -1
コース一覧
Java 中級:コレクション・Stream・例外処理
HashMap の基本

Java 中級:コレクション・Stream・例外処理

コレクション、ジェネリクス、例外処理、Stream API、関数型インターフェース、日付処理、ファイル I/O、継承など Java の中級トピックを実践的に学べるコースです。Java の基礎文法とオブジェクト指向を理解している学習者を対象に、現場の Java コードを読み書きするための知識を補強します。約 16 時間 (1 日 30 分 × 32 日) で 64 レッスンを修了でき、修了後は Spring Boot や業務システム開発に必要な Java 力が身につきます。

1
コレクション基礎
01. ArrayList を使う5分
02. List を走査する5分
03. 要素の削除と検索5分
04. HashMap の基本5分
05. Map を走査する5分
06. Set で重複を排除5分
07. Collections クラスの便利メソッド5分
08. コレクション基礎 まとめクイズ5分
2
ジェネリクス
01. ジェネリッククラスを作る5分
02. ジェネリックメソッド5分
03. 境界型パラメータ5分
04. ワイルドカード ?5分
05. Pair<K,V> を作る5分
06. ジェネリクス まとめクイズ5分
3
例外処理
01. try-catch で例外をつかむ5分
02. 複数の catch ブロック5分
03. throws と例外の伝播5分
04. 独自の例外を作る5分
05. try-with-resources5分
06. finally ブロック5分
07. 例外処理 まとめクイズ5分
4
Stream API
01. Stream を作る5分
02. filter で絞り込む5分
03. map で変換する5分
04. reduce で集約する5分
05. collect で集める5分
06. sorted で並び替え5分
07. distinct で重複排除5分
08. limit と skip5分
09. 並列ストリーム5分
10. Stream API まとめクイズ5分
5
関数型インターフェース
01. ラムダ式の基本5分
02. メソッド参照 ::5分
03. Function インターフェース5分
04. Predicate インターフェース5分
05. Consumer と Supplier5分
06. BiFunction と 2 引数の関数5分
07. 関数型インターフェース まとめクイズ5分
6
文字列操作
01. String.format で書式化5分
02. StringBuilder で連結5分
03. 正規表現の基本5分
04. split と join5分
05. 文字列操作 まとめクイズ5分
7
日付と時刻
01. LocalDate で日付を扱う5分
02. LocalDateTime で時刻も扱う5分
03. Duration で時間差を計算5分
04. 日付の書式化とパース5分
05. 日付の加減算5分
06. 日付と時刻 まとめクイズ5分
8
ファイル I/O
01. Files でファイルに書き込む5分
02. ファイルを行単位で読む5分
03. Path でファイルパスを扱う5分
04. BufferedReader と Stream API5分
05. ファイルの存在確認と削除5分
06. ファイル I/O まとめクイズ5分
9
継承とポリモーフィズム
01. extends で継承する5分
02. super で親を呼ぶ5分
03. メソッドのオーバーライド5分
04. abstract で抽象クラス5分
05. interface で契約を定義5分
06. default メソッド5分
07. instanceof と型パターン5分
08. ポリモーフィズムを活かす5分
09. 継承とポリモーフィズム まとめクイズ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 を返すこと

入出力例

priceOf("apple") → 100 priceOf("banana") → 80 priceOf("cherry") → 200 priceOf("kiwi") → -1 priceOf("") → -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 で保存