マップ(Map)は、**キー(Key)と値(Value)**をペアにしてデータを管理するためのデータ構造です。キーを指定することで、それに対応する値を素早く取り出せるのが特徴で、現実世界の「辞書」や「電話帳」のようなものです。
Javaで最も一般的に使われるマップの実装クラスは HashMap です。
1. マップの宣言と特徴
MapもListと同様にインターフェースであり、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());
}

