#16 Javaで学ぶ辞書型(マップ)の基本
Javaで名前と値の組み合わせを扱うには、HashMapというクラスを使います。この記事では、Javaにおける辞書に相当する使い方と、実務でよく使う操作を解説します。
HashMapを作ってみる
import java.util.HashMap;
HashMap<String, Integer> scores = new HashMap<>();
scores.put("太郎", 90);
scores.put("次郎", 85);
値を取り出す
int score = scores.get("太郎");
存在しないキーをget()で取得しようとするとnullが返るため、あらかじめcontainsKey()で確認するのが安全です。
if (scores.containsKey("次郎")) {
// 処理
}
既定値をあらかじめ決めておきたい場合はgetOrDefaultが便利です。
int score = scores.getOrDefault("三郎", 0);
全てのキーと値を順に処理する
for (String key : scores.keySet()) {
System.out.println(key + ": " + scores.get(key));
}
キーと値の両方を一度に取り出したい場合はentrySet()を使うと、get()を毎回呼び出す必要がなく効率的です。
for (Map.Entry<String, Integer> entry : scores.entrySet()) {
System.out.println(entry.getKey() + ": " + entry.getValue());
}
Javaならではの注意点
HashMap<String, Integer>のように、キーと値の型を必ず指定する必要があります。プリミティブ型(int など)はそのまま使えず、Integerのような「オブジェクト版」の型を使う点も、以前のArrayListの記事と同様の注意点です。また、HashMapはキーの並び順を保証しないため、追加した順序を保ちたい場合はLinkedHashMap、キーの大小関係で自動的に並べ替えたい場合はTreeMapという代替クラスも用意されています。
まとめ
Javaの辞書はHashMapが基本で、型を明示して使います。containsKey()やgetOrDefaultで安全にキーを確認・取得し、entrySet()で効率よく繰り返し処理を行いましょう。
本ページはプロモーションを含みます。
参考書籍(PR)
Javaをもっと学びたい方には「スッキリわかるJava入門 第4版」がおすすめです。
PR
コードを書かずに自動化したい方へ
「学んだけど自分の作業に組み込む時間がない」という方向けに、ダブルクリックで動く Windows専用の自動化ツールをオーダーメイドで作成しています。気になる方は こちらをご覧ください。
コメント
コメントを投稿