言語
日本語
English

Caution

お使いのブラウザはJavaScriptが無効になっております。
当サイトでは検索などの処理にJavaScriptを使用しています。
より快適にご利用頂くため、JavaScriptを有効にしたうえで当サイトを閲覧することをお勧めいたします。

Java辞典

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

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

対応: put() / get() Java 1.2(1998)
getOrDefault() Java 8(2014)

キーと値のペアを管理するマップを作成し、要素を追加・取得するためのメソッドです。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)場合のみ値を追加します。

サンプルコード

sample_HashmapPutGet.java
import java.util.HashMap;

class HashmapPutGet {
    public static void main(String[] args) {
        // HashMap を作成して要素を追加します
        HashMap<String, Integer> scores = new HashMap<>();
        scores.put("岡部倫太郎", 85);
        scores.put("牧瀬紅莉栖", 92);
        scores.put("椎名まゆり", 78);
        System.out.println(scores); // 出力順序は不定です(ハッシュマップは順序を保証しません)。

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

        // put() でキーが存在する場合は上書きされます
        scores.put("岡部倫太郎", 90);
        System.out.println(scores.get("岡部倫太郎")); // 『90』と出力されます。

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

        // putIfAbsent() でキーがない場合のみ追加します
        scores.putIfAbsent("牧瀬紅莉栖", 100);
        scores.putIfAbsent("橋田至", 70);
        System.out.println(scores.get("牧瀬紅莉栖"));  // 『92』と出力されます(変更なし)。
        System.out.println(scores.get("橋田至")); // 『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); // 各単語の出現回数が表示されます。
    }
}
HashmapPutGet.java
javac HashmapPutGet.java
java HashmapPutGet
{椎名まゆり=78, 牧瀬紅莉栖=92, 岡部倫太郎=85}
85
null
90
0
92
70
{and=1, is=2, fun=1, easy=1, java=2}

概要

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

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

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

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