【Java学習|初心者向け】JavaのMap操作をマスターしよう!実務で差がつく5つのメソッド活用術

1. 導入:なぜMap操作を正しく知る必要があるのか

Java開発において、データの関連付け(キーと値のペア)を扱う「Map」は避けて通れないクラスです。しかし、ただ値を保存するだけでなく、状況に応じた適切なメソッドを選ぶことで、コードの可読性が上がり、バグの混入を防ぐことができます。「上書きしていいのか?」「すでにある場合は何もしないのか?」といったロジックをシンプルに記述するために、主要な5つのメソッドをしっかり押さえておきましょう。

2. 基礎知識:Mapとは何か

Mapは、一意の「キー(Key)」に対して「値(Value)」を関連付けて保持するデータ構造です。例えば、ユーザーIDをキーにして名前を保存する場合などがこれに当たります。Javaでは主にHashMapが使われます。今回は、Mapの内容を操作する基本的なメソッドに焦点を当てます。

3. 実装/解決策:メソッドの使い分け

用途に合わせて以下のメソッドを使い分けます。

・put(): 指定したキーに値を設定します。存在する場合は上書きします。
・putAll(): 別のMapの内容をすべて追加します。
・putIfAbsent(): キーが存在しない場合のみ追加します。初期化処理に便利です。
・remove(): キーを指定して要素を削除します。
・replace(): キーがすでに存在する場合のみ値を更新します。

4. サンプルプログラム

以下のコードをコピーして、動作を確認してみてください。

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

public class MapLesson {
public static void main(String[] args) {
Map userMap = new HashMap<>();

// 1. put(): 基本的な追加
userMap.put(“ID001”, “佐藤”);
userMap.put(“ID002”, “鈴木”);

// 2. putAll(): 別のMapをまとめて追加
Map extraUsers = Map.of(“ID003”, “田中”, “ID004”, “高橋”);
userMap.putAll(extraUsers);

// 3. putIfAbsent(): ID001は存在するため更新されない
userMap.putIfAbsent(“ID001”, “佐藤(更新)”);

// 4. replace(): キーが存在する場合のみ値を更新
userMap.replace(“ID002”, “鈴木(新)”);

// 5. remove(): キーを指定して削除
userMap.remove(“ID004”);

// 結果を出力
userMap.forEach((key, value) -> System.out.println(key + “: ” + value));
}
}

5. 応用・注意点:現場で陥りやすい罠

実務では、Null値の扱いに注意が必要です。HashMapはnullキーやnull値を許容しますが、TreeMapやConcurrentHashMapなどは許容しない場合があります。

また、スレッドセーフ(複数スレッドからの同時アクセス)が必要な場合は、通常のHashMapではなくConcurrentHashMapを使用してください。特に「確認してから追加する(if文でcontainsしてからputする)」という処理を別々に行うと、マルチスレッド環境では競合が発生します。この場合、今回紹介したputIfAbsent()のようなアトミック(不可分)なメソッドを使うことで、競合を防ぎ、安全で効率的なコードを書くことができます。

まずはこの5つのメソッドを使いこなして、Map操作の基礎体力を高めていきましょう!

コメント

タイトルとURLをコピーしました