Java Mapインターフェース完全ガイド:構造、実装、主要メソッド
Java Mapインターフェース
JavaのMapインターフェースについて、その構造、実装クラス、主要メソッド、実世界での活用法を深掘りします。
java.utilパッケージの一部であるMapインターフェースは、Javaコレクションフレームワークにおけるキー/値ペアコレクションの基盤を提供します。
Mapの仕組み
Javaにおいて、Mapはデータを一意のキー/値ペアとして格納します。各キーは一意であり、単一の値にマッピングされるため、重複キーは存在しません。
キーを参照することで値を取得または更新できます。

例えば、キーus、br、esがそれぞれUnited States、Brazil、Spainにマッピングされます。
特筆すべきは、Mapインターフェースが3つの異なるコレクションを管理することです:
- すべてのキーのセット
- すべての値のセット
- すべてのキー/値の関連(エントリ)のセット
これらのセットにより、キー、値、エントリを独立してアクセスできます。
Mapを実装するクラス
Mapはインターフェースであるため、直接インスタンス化できません。代わりに、以下の具体的クラスのいずれかを使用します(すべてjava.utilパッケージにあります):
HashMapEnumMapLinkedHashMapWeakHashMapTreeMap

Mapを拡張するサブインターフェース
Mapインターフェースは、順序付けや並行性保証を追加するいくつかの特殊サブインターフェースによって拡張されます:
SortedMap- キーでエントリをソート順に維持NavigableMap-SortedMapをナビゲーションメソッドで拡張ConcurrentMap- スレッドセーフな操作を提供

コードでのMapの使用
まずインターフェースをインポートします:
import java.util.Map;
次に具体的なインスタンスを作成。例えばHashMapを使用:
// HashMapを使用したMap実装
Map<Key, Value> numbers = new HashMap<>();
ここで、Keyは一意の識別子、Valueは関連データを保持します。
Mapの主要メソッド
Collectionインターフェースのメソッドに加え、Mapは特殊な操作を提供します:
- put(K, V) - キー/値ペアを追加。キーが既存なら値を置換
- putAll() - 他のマップのエントリをマージ
- putIfAbsent(K, V) - キーが未マッピングの場合のみ挿入
- get(K) - キーの値を取得。存在しない場合は
null - getOrDefault(K, defaultValue) - マッピング値または指定デフォルトを返す
- containsKey(K) - キーの存在確認
- containsValue(V) - 値の存在確認
- replace(K, V) - キーの値を更新
- replace(K, oldValue, newValue) - 現在値が一致する場合のみ条件付き置換
- remove(K) - キーのエントリを削除
- remove(K, V) - キーが指定値にマッピングされる場合のみ削除
- keySet() - すべてのキーの
Setを返す - values() - すべての値の
Collectionを返す - entrySet() - すべてのキー/値マッピングの
Setを返す
Map実装の例
1. HashMapの例
import java.util.Map;
import java.util.HashMap;
class Main {
public static void main(String[] args) {
// HashMapを使用したMap作成
Map<String, Integer> numbers = new HashMap<>();
// マップに要素を挿入
numbers.put("One", 1);
numbers.put("Two", 2);
System.out.println("Map: " + numbers);
// マップのキーにアクセス
System.out.println("Keys: " + numbers.keySet());
// マップの値にアクセス
System.out.println("Values: " + numbers.values());
// マップのエントリにアクセス
System.out.println("Entries: " + numbers.entrySet());
// マップから要素を削除
int value = numbers.remove("Two");
System.out.println("削除された値: " + value);
}
}
出力
Map: {One=1, Two=2}
Keys: [One, Two]
Values: [1, 2]
Entries: [One=1, Two=2]
削除された値: 2
HashMapの詳細についてはJava HashMapを参照してください。
2. TreeMapの例
import java.util.Map;
import java.util.TreeMap;
class Main {
public static void main(String[] args) {
// TreeMapを使用したMap作成
Map<String, Integer> values = new TreeMap<>();
// マップに要素を挿入
values.put("Second", 2);
values.put("First", 1);
System.out.println("TreeMapを使用したMap: " + values);
// 値の置換
values.replace("First", 11);
values.replace("Second", 22);
System.out.println("新しいMap: " + values);
// マップから要素を削除
int removedValue = values.remove("First");
System.out.println("削除された値: " + removedValue);
}
}
出力
TreeMapを使用したMap: {First=1, Second=2}
新しいMap: {First=11, Second=22}
削除された値: 11
TreeMapの詳細についてはJava TreeMapを参照してください。
Java
- C#インターフェイスをマスターする:定義、実装、実践的なユースケース
- Java演算子をマスター:種類、構文、実践例
- Javaインターフェース完全ガイド:概念、実装、ベストプラクティス
- Javaのtry-with-resourcesをマスターする:自動リソース管理の仕組みと活用法
- Javaアノテーション完全ガイド:種類、配置場所、実践例
- Java NavigableSetインターフェースをマスター:ナビゲーション、ソート、実践例
- Javaラムダ式完全ガイド:基礎からStream APIまで
- Java インターフェース vs 抽象クラス:適切な抽象化の選び方
- Javaインターフェース完全ガイド: 定義・実装・多重継承・タグインターフェース
- Java 9コレクションファクトリメソッド:不変List、Set、Mapを簡潔に作成
- Java 9プライベートインターフェースメソッド:カプセル化とコード再利用を強化