「駑馬十駕」を信念に IT系情報を中心に調べた事をコツコツ綴っています。

はじめに:Map操作、まだ「containsKey」で書いていませんか?

JavaでMapを使うとき、以下のようなコードを書いた経験はありませんか?

Java 8以前ではこれが一般的でした。しかしJava 8では、computeIfAbsentmergeを使うことで、こうした冗長なコードをたった1行で表現できます!

本記事では、これらのメソッドの使い方から実践例まで徹底的に解説します。


✅ computeIfAbsentとは?

🔍 役割

キーが存在しないときに初期値を生成しMapに登録する。

📌 シグネチャ

✅ 使用例:リストを保持するMapに要素を追加する場合

📉 Before(従来のコード)

📈 After(computeIfAbsentで1行に)

👉 このように、存在確認不要でスッキリ!


✅ mergeとは?

🔍 役割

指定したキーに対して、既に値がある場合は「結合処理」を行い、新規ならそのまま値を格納。

📌 シグネチャ

✅ 使用例:カウントアップ処理

📉 Before(キー存在チェックあり)

📈 After(mergeで1行)

👉 キーがなければ1を設定。あれば現在値と1を足す。美しい!


✅ computeIfAbsentとmergeの使い分け

ケース推奨メソッド
値を「初期化してから操作」したいcomputeIfAbsent
「集計・加算・結合」したいmerge
ListやSetを使うMapに要素を追加したいcomputeIfAbsent
数値や文字列をまとめたいmerge

✅ さらに活用例:文字列の出現回数カウント

📤 出力:

{apple=2, banana=2, orange=1}

✅ Listを使ったグルーピングも簡単に!

📤 出力:

{A=[Apple, Avocado], B=[Banana]}

✅ まとめ:Map操作はJava 8で劇的にスマートになる!

キーワード内容
computeIfAbsent値がない場合のみ初期化
merge既存値と競合処理(加算・結合など)
メリットif文不要・コードが短く読みやすくなる

Ads by Google

0 0
Article Rating
申し込む
注目する
guest
0 コメント一覧
最も古い
最新 高評価
インラインフィードバック
すべてのコメントを見る
0
あなたの考えが大好きです、コメントしてください。x