Kotlin in Action 6章 メモ①
メソッドまとめ
Kotlin in Action 6章の1節で学んだコレクションに作用するメソッドを表としてまとめる:
| メソッド名 | 説明 | 返り値 |
|---|---|---|
filter | ラムダがtrueを返したものを選ぶ | List<T> |
filterNot | ラムダがfalseを返したものを選ぶ | List<T> |
map | 要素を変換する(写像と同じだね) | List<R> |
filterIndexed | インデックスと要素を引数にとるラムダがtrueの要素を返す | List<T> |
mapValues | Map型の値を変換する | Map<K, V> |
reduce | accumulatorと次の要素をラムダで畳み込む(初期値は先頭要素) | T |
fold | reduceに似ているが、初期値と戻り値の型を自由に指定できる | R |
runningReduce | reduceの途中経過を全てリストにする | List<T> |
runningFold | foldの途中経過を全てリストにする | List<R> |
partition | ラムダのtrue/falseで要素を2つのリストに分ける | Pair<List<T>, List<T>> |
groupBy | ラムダの戻り値をキーにグループ分けしたMapを作る | Map<K, List<T>> |
filterValues | Map型の値をラムダでフィルタリングする | Map<K, V> |
associate | 各要素をラムダでPair<K, V>に変換しMapを作る | Map<K, V> |
associateWith | 元の要素をキー、ラムダの結果を値とするMapを作る | Map<T, V> |
associateBy | ラムダの結果をキー、元の要素を値とするMapを作る | Map<K, T> |
replaceAll | MutableListの全要素をラムダの結果で置き換える | Unit |
fill | MutableListの全要素を指定した値で上書きする | Unit |
ifEmpty | コレクションが空のときにラムダの結果を返す(空でなければ自身を返す) | C |
windowed | 指定サイズのスライディングウィンドウ(部分リスト)のリストを返す | List<List<T>> |
chunked | コレクションを指定サイズのチャンクに分割する | List<List<T>> |
zip | 2つのコレクションを要素ごとにPairにまとめたリストを返す | List<Pair<T, R>> |
flatMap | 各要素をコレクションに変換し、それを平坦化して1つのリストにする | List<R> |
flatten | コレクションのコレクションを平坦化して1つのリストにする | List<T> |
例
reduce
val list = listOf(1, 2, 3, 4)
val summed = list.reduce { acc, element ->
println("acc: $acc, element: $element")
acc + element
}
// acc: 1, element: 2
// acc: 3, element: 3
// acc: 6, element: 4
// 10
fold
val folded = people.fold("") { acc, person ->
println("acc: $acc, person: $person")
acc + person.name
}
// acc: , person: Person(name=Alex, age=29)
// acc: Alex, person: Person(name=Natalia, age=28)
// AlexNatalia