🗺️ マップ(Map)の使い方

マップ(Map)は、**キー(Key)値(Value)**をペアにしてデータを管理するためのデータ構造です。キーを指定することで、それに対応する値を素早く取り出せるのが特徴で、現実世界の「辞書」や「電話帳」のようなものです。

Javaで最も一般的に使われるマップの実装クラスは HashMap です。

1. マップの宣言と特徴

MapListと同様にインターフェースであり、HashMapなどの具体的なクラスを実装して使います。ジェネリクス (<>) で、キーの型値の型の2つを指定します。

Java

import java.util.HashMap;
import java.util.Map;

// キー:String型(国名)、値:String型(首都名)
Map<String, String> capitals = new HashMap<>(); 

// キー:Integer型(社員ID)、値:String型(社員名)
Map<Integer, String> employees = new HashMap<>();

2. 基本的な操作

Mapは、キーと値を操作するための直感的なメソッドを提供します。

操作メソッド説明
追加/更新map.put(key, value)新しいキーと値のペアを追加します。既に同じキーが存在する場合、値は上書きされます。
値の取得map.get(key)指定したキーに対応する値を取得します。キーが存在しない場合は null を返します。
削除map.remove(key)指定したキーとその値のペアを削除します。
キーの確認map.containsKey(key)指定したキーがマップに存在するかどうかを boolean で返します。
サイズmap.size()マップに格納されているペアの数を取得します。

💻 実行例

Java

public class MapExample {
    public static void main(String[] args) {
        Map<String, String> capitals = new HashMap<>();
        
        // データの追加
        capitals.put("Japan", "Tokyo");
        capitals.put("USA", "Washington D.C.");
        capitals.put("China", "Beijing");

        // データの取得
        String capitalOfJapan = capitals.get("Japan");
        System.out.println("日本の首都: " + capitalOfJapan); // 出力: Tokyo
        
        // データの更新(キーが重複)
        capitals.put("USA", "New York"); // 実際はWashington D.C.だが、ここでは上書きの例
        System.out.println("更新後のUSAの首都: " + capitals.get("USA")); // 出力: New York

        // 存在しないキーの取得
        String capitalOfFrance = capitals.get("France");
        System.out.println("Franceの値: " + capitalOfFrance); // 出力: null

        // キーの存在チェック
        if (capitals.containsKey("China")) {
            System.out.println("Chinaのデータは存在します。");
        }
    }
}

3. マップの反復処理

マップのデータを取り出すには、主に以下の方法でキーの集合値の集合を取得し、for文で回します。

① キーを取り出して値を取得する

Java

// キーの集合(Set)を取得し、順番に処理
for (String country : capitals.keySet()) {
    String capital = capitals.get(country);
    System.out.println(country + "の首都は " + capital);
}

② キーと値のペアを同時に取得する (entrySet())

最も効率的な方法です。Map.Entryオブジェクトとしてキーと値のペアを取り出せます。

Java

// キーと値のペアの集合(Set)を取得し、順番に処理
for (Map.Entry<String, String> entry : capitals.entrySet()) {
    System.out.println("Key: " + entry.getKey() + ", Value: " + entry.getValue());
}