結論
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クラスでデフォルトのデータを用意していてユーザーからの入力がない場合にはこちらが用意したデータを挿入したい場合に結構使える