Skip to content
閲覧中:
setに関するmethod

setに関するmethod

Javaの Map は、**「キー(Key)」と「値(Value)」をペア**にして保存する非常に強力なコレクションです。

主要なメソッドを「登録・取得」「調査」「一括処理」「Java 8以降の関数型操作」の4つのカテゴリーに分けて紹介します。


1. 基本操作(登録・取得・削除)

もっとも頻繁に使う、辞書のようにデータを出し入れする操作です。

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

Map<String, Integer> map = new HashMap<>();

// put: データの登録
map.put("Apple", 100);
map.put("Banana", 200);

// get: データの取得
Integer price = map.get("Apple"); // 100

// getOrDefault: キーがない場合のデフォルト値を指定して取得
Integer cherryPrice = map.getOrDefault("Cherry", 0); // 0 (エラーにならない)

// remove: 削除
map.remove("Banana");

// putIfAbsent: キーが存在しない場合のみ登録
map.putIfAbsent("Apple", 150); // Appleは既にあるので何もしない

2. 調査・情報の取得

Mapの状態を確認するためのメソッドです。

Java
// size: ペアの数
int size = map.size();

// containsKey / containsValue: 存在確認
boolean hasApple = map.containsKey("Apple");   // true
boolean has100   = map.containsValue(100);     // true

// keySet: キーの一覧を取得
// values: 値の一覧を取得
System.out.println(map.keySet()); // [Apple]
System.out.println(map.values()); // [100]

// entrySet: キーと値のセット(Entry)の一覧を取得
for (Map.Entry<String, Integer> entry : map.entrySet()) {
    System.out.println(entry.getKey() + "は" + entry.getValue() + "円");
}

3. Java 8以降の関数的な操作

複雑な処理を1行で書ける、モダンで非常に便利なメソッド群です。

Java
// forEach: 全要素の繰り返し処理
map.forEach((key, value) -> System.out.println(key + ":" + value));

// replaceAll: 全要素を一括置換(例:全品10%引きにする)
map.replaceAll((key, value) -> (int)(value * 0.9));

// compute: 指定したキーの値を計算して更新
map.compute("Apple", (key, value) -> value + 50); // 50円値上げ

// merge: 既存の値と新しい値を合体させる(集計に超便利!)
// すでに値があれば足し算、なければその値を登録
map.merge("Apple", 10, (oldVal, newVal) -> oldVal + newVal);

4. まとめ表

メソッド 役割 戻り値
put(k, v) キーと値を登録(既存なら上書き) 古い値
get(k) キーに対応する値を取得 値(なければnull)
getOrDefault(k, d) キーがなければデフォルト値を返す
containsKey(k) 指定したキーがあるか確認 boolean
keySet() キーだけの「Set」を返す Set
entrySet() キーと値のペア「Entry」の集合を返す Set
merge(k, v, func) 値があれば計算し、なければ登録 新しい値

実践:どっちを使うべき?

  • ただのリストのように扱いたいList
  • 重複を消したいだけSet
  • 「ID」や「名前」をフックに、一瞬でデータを探し出したいMap

Mapの mergecompute は、アンケートの集計や単語の出現回数を数えるときに驚くほどコードが短くなります。

「特定の条件でMapの中身をフィルタリングしたい」や「ListからMapを作成したい」といった具体的なStream APIとの連携パターンも見てみますか?