0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

KotlinでMapの操作をスマートに書く(+/-演算子を使った簡潔な記法)

Posted at

はじめに

この記事では、KotlinにおけるMapの値追加・更新・削除をシンプルかつ簡潔に書く方法について解説します。
特に、Mapに対する「+」や「-」演算子を用いたイミュータブルな書き方について、具体的な例を交えて紹介します。

📝 基本的な問題(よくある冗長なコード)

例えば、あるキーに対して値を更新したいとき、こんなコードを見たことがありませんか?



// 値を更新する例(MutableMap利用)
val updatedMap = originalMap.toMutableMap().apply {
    put(key, newValue)
}

これは動作としては問題ありませんが、
毎回 toMutableMap() したり、apply で put を呼ぶのは冗長です。

✅ Kotlin的なスマートな記述法:「+演算子」を使う方法

実は、KotlinではMapに対して演算子 + を使った追加・更新が可能です。

▶︎ 1つの要素を追加・更新する場合:

val updatedMap = originalMap + (key to newValue)
  • シンプルで、意図が明確に伝わります
  • 同じキーが存在すれば上書き、無ければ新規追加されます
  • 元のoriginalMapは変更されません(イミュータブル)

動作例:



val original = mapOf("apple" to 1, "banana" to 2)
val updated = original + ("banana" to 3)

println(updated) // {apple=1, banana=3}



上記のように、banana の値が上書きされました。

▶︎ 複数の要素を一度に追加・更新する場合:

複数のキーを同時に更新したいときは、mapOfを併用できます。

val updatedMap = originalMap + mapOf(
    key1 to value1,
    key2 to value2
)

こちらも非常にシンプルで読みやすくなります。

動作例:

val original = mapOf("a" to 1, "b" to 2)
val updated = original + mapOf("b" to 99, "c" to 3)

println(updated) // {a=1, b=99, c=3}

複数のキーが一度に更新されていることが分かります。

🚩 キーの削除も演算子でできる:「-演算子」

値の削除には - 演算子を利用できます。

▶︎ 1つのキーを削除する場合:

val updatedMap = originalMap - key

動作例:

val original = mapOf("apple" to 1, "banana" to 2, "orange" to 3)
val updated = original - "banana"

println(updated) // {apple=1, orange=3}

▶︎ 複数のキーを削除する場合:

複数削除する場合は、リストを渡せます。

val updatedMap = originalMap - listOf(key1, key2)

動作例:

val original = mapOf("a" to 1, "b" to 2, "c" to 3)
val updated = original - listOf("a", "c")

println(updated) // {b=2}

非常に簡潔で読みやすいです。

📌 注意点(MutableMapに対しては?)

今回紹介した方法は、基本的にイミュータブルな操作です。

  • 元のMapを変更したくない場合に最適
  • 逆に、頻繁な書き換えが必要な場面ではパフォーマンスを考え、MutableMapを直接操作する方法が適することがあります

MutableMapでの更新例:



val mutableMap = originalMap.toMutableMap()
mutableMap[key] = newValue

この方法は高速ですが、副作用に注意が必要です。

🎯 まとめ

  • Kotlinでは、+や-演算子を使うことで、Mapの追加・更新・削除を簡潔に書ける
  • 同じキーは自動的に上書きされる
  • イミュータブルな操作なので、意図せぬ副作用を防げる

ぜひ、簡潔で美しいコードのために活用してみてください!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?