Caution

お使いのブラウザはJavaScriptが実行できない状態になっております。
当サイトはWebプログラミングの情報サイトの為、
JavaScriptが実行できない環境では正しいコンテンツが提供出来ません。
JavaScriptが実行可能な状態でご閲覧頂くようお願い申し上げます。

Java辞典

  1. トップページ
  2. Java辞典
  3. new HashMap<>() / マップ.put() / get() / getOrDefault()

new HashMap<>() / マップ.put() / get() / getOrDefault()

キーと値のペアを管理するマップを作成し、要素を追加・取得するためのメソッドです。HashMap はキーに対する値の検索がO(1)で高速なため、連想配列のような使い方に適しています。

構文
import java.util.HashMap;

// 空の HashMap を作成します。
new HashMap<キーの型, 値の型>();

// キーと値のペアを追加・更新します。
マップ.put(K key, V value);

// 指定したキーの値を返します。
マップ.get(Object key);

// キーが存在しない場合にデフォルト値を返します(Java 8 以降)。
マップ.getOrDefault(Object key, V defaultValue);

// キーが存在しない場合のみ追加します(Java 8 以降)。
マップ.putIfAbsent(K key, V value);
メソッド一覧
メソッド概要
new HashMap<>()空のハッシュマップを作成します。初期容量は16、負荷係数は0.75です。
put(K key, V value)キーと値のペアを追加します。キーが既に存在する場合は値を上書きし、以前の値を返します。
get(Object key)指定したキーに対応する値を返します。キーが存在しない場合は null を返します。
getOrDefault(Object key, V defaultValue)キーが存在する場合はその値を、存在しない場合は defaultValue を返します。
putIfAbsent(K key, V value)キーが存在しない(または値が null)場合のみ値を追加します。
サンプルコード
import java.util.HashMap;

// HashMap を作成して要素を追加します。
HashMap<String, Integer> scores = new HashMap<>();
scores.put("Alice", 85);
scores.put("Bob", 92);
scores.put("Carol", 78);
System.out.println(scores); // 出力順序は不定です(ハッシュマップは順序を保証しません)。

// get() でキーに対応する値を取得します。
System.out.println(scores.get("Alice")); // 『85』と出力されます。
System.out.println(scores.get("Dave"));  // キーが存在しないため『null』と出力されます。

// put() でキーが存在する場合は上書きされます。
scores.put("Alice", 90); // Alice のスコアを更新します。
System.out.println(scores.get("Alice")); // 『90』と出力されます。

// getOrDefault() でデフォルト値を指定します。
int score = scores.getOrDefault("Dave", 0);
System.out.println(score); // キーが存在しないため『0』と出力されます。

// putIfAbsent() でキーがない場合のみ追加します。
scores.putIfAbsent("Bob", 100); // Bob は既に存在するため追加されません。
scores.putIfAbsent("Dave", 70); // Dave は存在しないため追加されます。
System.out.println(scores.get("Bob"));  // 『92』と出力されます(変更なし)。
System.out.println(scores.get("Dave")); // 『70』と出力されます。

// 文字列をキーとしたカウンターの例です。
String sentence = "java is fun and java is easy";
HashMap<String, Integer> counter = new HashMap<>();
for (String word : sentence.split(" ")) {
    counter.put(word, counter.getOrDefault(word, 0) + 1);
}
System.out.println(counter); // 各単語の出現回数が表示されます。
概要

HashMap はキーのハッシュ値に基づいてデータを管理するため、要素の追加・取得・削除がO(1)(平均)で高速に行えます。ただし、HashMap は要素の順序を保証しません。挿入順序を保持したい場合は LinkedHashMap、キーを常に昇順に保ちたい場合は TreeMap を使用してください。

また、HashMap はキーとして null を1つだけ許可し、値には複数の null を格納できます。スレッドセーフな操作が必要な場合は ConcurrentHashMap を使用してください。

要素の削除や存在確認には『remove() / containsKey()』、キー・値の一覧取得には『keySet() / values() / entrySet()』を使用してください。

記事の間違いや著作権の侵害等ございましたらお手数ですがまでご連絡頂ければ幸いです。