結論

Kotlinでコレクションに対して.toMapを使うと単純な再帰処理より高度な操作ができる。

経緯

kotlinで他人のコード見てたら見たこと無いMapの使い方を見たのメモ

val users = listOf(User(id = 5, name = tanaka), User(id = 7, name = sato))
val usersMap = users.map { it.id to it }.toMap()

で型は

Map<Int, User>

となりidが外に出るわけだけど今までmapをfor文の代わりにしか使ったことなかったので何のためにidを分けて使うのかわからなかった。

例えば1~100の間でidが連続していなかった場合デフォルトで用意したUserのデータを入れたい時

listOf(1-100).map { id ->
  if (usersMap.get(id) == null) {
    defaultUser
  }
  usersMap.get(it)
}

といった具合にからのデータを挿入できる
for文で条件分けるよりスマートなはず

enumクラスでデフォルトのデータを用意していてユーザーからの入力がない場合にはこちらが用意したデータを挿入したい場合に結構使える

Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account log in.