2026.09.30Java応用 #19|HashMapTECH BLOG

Java応用 #19|HashMapとは?キーと値でデータを管理しよう

この記事でわかること

  • HashMapとは何か
  • キーと値の仕組み
  • HashMapにデータを追加・取得・変更・削除する方法
  • キーの存在を確認する方法
  • HashMapを利用する場面

前回のおさらい

前回は、データを追加・削除できるArrayListについて学習しました。

ArrayListでは、データを順番に格納し、位置を指定して取り出すことができます。

ArrayList<String> names = new ArrayList<>();

names.add("田中");
names.add("鈴木");

System.out.println(names.get(0));

この場合、最初のデータである「田中」が表示されます。

では、商品コードから商品名を探したい場合や、社員番号から社員名を取り出したい場合はどうでしょうか?

このように、ある情報を手がかりに、対応する別の情報を取り出したい場合に便利なのがHashMapです。


HashMapとは?

HashMapは、キー(Key)と値(Value)を組み合わせてデータを管理するクラスです。

例えば、商品コードと商品名を管理する場合、次のような対応関係を作れます。

商品コード    商品名
A001         商品A
A002         商品B
A003         商品C

この場合、商品コードがキー、商品名が値になります。

  • キー(Key) → データを識別するための情報
  • 値(Value) → キーに対応するデータ

HashMapを使うと、商品コードを指定して商品名を取り出せます。


HashMapを作成しよう

HashMapを利用するには、まずimport文を記述します。

import java.util.HashMap;

次に、HashMapを作成します。

HashMap<String, String> products = new HashMap<>();

この記述では、キーも値もString型のHashMapを作成しています。

  • 最初のString → キーの型
  • 2番目のString → 値の型
  • products → HashMapを参照する変数

キーと値は、異なる型にすることもできます。

HashMap<String, Integer> stock = new HashMap<>();

この例では、String型のキーに対して、Integer型の値を管理します。例えば、商品コードと在庫数の組み合わせに利用できます。


① putでデータを追加する

HashMapにデータを登録するには、put()メソッドを使用します。

import java.util.HashMap;

public class Main {

    public static void main(String[] args) {

        HashMap<String, String> products = new HashMap<>();

        products.put("A001", "商品A");
        products.put("A002", "商品B");
        products.put("A003", "商品C");

        System.out.println(products);

    }

}

put()では、キーと値を指定します。

products.put("A001", "商品A");
  • キー → A001
  • 値 → 商品A

このように、キーと値を組み合わせて登録します。

なお、HashMapはデータの並び順を保証しません。そのため、表示される順番は登録した順番と一致するとは限りません。


② getで値を取得する

キーに対応する値を取り出すには、get()メソッドを使用します。

System.out.println(products.get("A001"));
System.out.println(products.get("A003"));

実行結果

商品A
商品C

ArrayListでは位置を指定しましたが、HashMapではキーを指定して値を取得する点が大きな違いです。

products.get("A001");

この場合、キー「A001」に対応する「商品A」が取得されます。

存在しないキーを指定した場合、get()はnullを返します。キーが登録されているか確認したい場合は、次に紹介するcontainsKey()を利用できます。


③ 同じキーをputするとどうなる?

HashMapでは、同じキーを使ってput()を実行すると、対応する値が更新されます。

products.put("A001", "商品A");
products.put("A001", "新しい商品A");

System.out.println(products.get("A001"));

実行結果

新しい商品A

同じキーを使っても、同じキーのデータが2件になるわけではありません。

同じキーに対してput()を実行すると、値が置き換わるという点を覚えておきましょう。


④ containsKeyでキーの存在を確認する

指定したキーがHashMapに登録されているか確認するには、containsKey()メソッドを使用します。

if (products.containsKey("A001")) {
    System.out.println("商品が登録されています。");
} else {
    System.out.println("商品が登録されていません。");
}

実行結果

商品が登録されています。

containsKey()は、キーが存在する場合にtrue、存在しない場合にfalseを返します。

そのため、if文と組み合わせて、キーが登録されているかどうかによって処理を分けることができます。


⑤ removeでデータを削除する

HashMapからデータを削除するには、remove()メソッドを使用します。

products.remove("A002");

この場合、キー「A002」と、それに対応する値が削除されます。

削除後に確認してみましょう。

System.out.println(products.get("A002"));

実行結果

null

キー「A002」のデータが削除されたため、対応する値を取得できなくなっています。


⑥ sizeで登録件数を確認する

HashMapに登録されているキーと値の組み合わせの数を取得するには、size()メソッドを使用します。

System.out.println(products.size());

例えば、3件登録されている場合は、次のように表示されます。

3

ArrayListと同じく、HashMapでもsize()を使用して件数を取得できます。


⑦ HashMapのデータを順番に処理する

HashMapに登録されているキーを順番に取り出すには、keySet()を利用できます。

for (String key : products.keySet()) {
    System.out.println(key + ":" + products.get(key));
}

このコードでは、keySet()でキーの集合を取得し、拡張for文でキーを1つずつ取り出しています。

そのキーをget()に渡すことで、対応する値を取得できます。

ただし、HashMapは表示順を保証しないため、実行結果の順番は登録順と一致するとは限りません。


ArrayListとHashMapの違い

ArrayList

  • データを順番に管理する
  • get(0)のように位置を指定して取得する
  • add()で追加、remove()で削除する
  • 同じ値を複数回格納できる

HashMap

  • キーと値を組み合わせて管理する
  • get(“A001”)のようにキーを指定して取得する
  • put()で登録・更新、remove()で削除する
  • キーは重複できず、同じキーを登録すると値が更新される

順番や位置でデータを扱いたいならArrayList、キーを手がかりにデータを取り出したいならHashMapというように使い分けましょう。


よくある間違い

① キーと値の順番を間違える

products.put("A001", "商品A");

put()では、最初にキー、次に値を指定します。

② 同じキーを登録するとデータが増えると思ってしまう

同じキーを指定してput()を実行すると、対応する値が更新されます。

③ ArrayListのように位置で取得しようとする

HashMapでは、通常、添字ではなくキーを指定して値を取得します。

products.get("A001");

④ HashMapの表示順を決めつける

HashMapは要素の順番を保証しません。表示順に意味がある場合は、別の方法を検討する必要があります。


まとめ

  • HashMapはキーと値を組み合わせてデータを管理する
  • put()でデータを登録・更新する
  • get()でキーに対応する値を取得する
  • containsKey()でキーの存在を確認する
  • remove()でデータを削除する
  • size()で登録件数を取得する
  • HashMapはデータの並び順を保証しない

HashMapは、商品コードと商品名、社員番号と社員名など、対応関係のあるデータを管理する場合に便利です。

次回は、プログラムの実行中にエラーが発生した場合に備える例外処理について学習します。