Kotlinには、リストの中にリストが含まれるような ネストされたデータ構造をフラットに変換 できる flatMap
という便利な関数があります。
flatMapの基本的な使い方
1. ネストされたリストをフラット化
Kotlin
val nestedList = listOf(
listOf(1, 2, 3),
listOf(4, 5),
listOf(6, 7, 8)
)
val flatList = nestedList.flatMap { it }
println(flatList) // 出力: [1, 2, 3, 4, 5, 6, 7, 8]
このように、flatMap
を使うと リストのリスト を 1 つのリストに統合できます。
2. 各要素を変換しながらフラット化
Kotlin
val words = listOf("Hello", "World")
val chars = words.flatMap { it.toList() }
println(chars) // 出力: [H, e, l, l, o, W, o, r, l, d]
flatMap
を使うことで、各単語を文字のリストに変換しつつ、それを 1 つのリストにまとめることができます。
3. フィルタリングと組み合わせる
Kotlin
val numbers = listOf(1, 2, 3, 4, 5)
val multipliedEvenNumbers = numbers.flatMap { num ->
if (num % 2 == 0) listOf(num * 2) else emptyList()
}
println(multipliedEvenNumbers) // 出力: [4, 8]
このように、flatMap
を使えば 特定の条件を満たす要素のみ変換してフラットなリストを作成 できます。
flatMapを活用するメリット
- ネストされたリストを簡単にフラット化できる
- 要素の変換とフラット化を同時に処理できる
- フィルタリングと組み合わせて柔軟なデータ変換が可能
複雑なリストの処理をシンプルに記述したい場合は、ぜひ flatMap
を活用してみてください!