foldTo
所在位置是kotlin.collections.foldTo
,其相關用法介紹如下。
用法一
inline fun <T, K, R, M : MutableMap<in K, R>> Grouping<T, K>.foldTo(
destination: M,
initialValueSelector: (key: K, element: T) -> R,
operation: (key: K, accumulator: R, element: T) -> R
): M
通過鍵對來自Grouping 源的元素進行分組,並將operation 依次應用於每個組的元素,將先前累積的值和當前元素作為參數傳遞,並將結果存儲在給定的destination 映射中。累加器的初始值由initialValueSelector 函數提供。
例子:
fun main(args: Array<String>) {
//sampleStart
val fruits = listOf("cherry", "blueberry", "citrus", "apple", "apricot", "banana", "coconut")
val evenFruits = fruits.groupingBy { it.first() }
.foldTo(mutableMapOf(), { key, _: String -> key to mutableListOf<String>() },
{ _, accumulator, element ->
if (element.length % 2 == 0) accumulator.second.add(element)
accumulator
})
val sorted = evenFruits.values.sortedBy { it.first }
println(sorted) // [(a, []), (b, [banana]), (c, [cherry, citrus])]
evenFruits.clear() // evenFruits is a mutable map
//sampleEnd
}
輸出:
[(a, []), (b, [banana]), (c, [cherry, citrus])]
參數
為每個組提供累加器初始值的函數。它使用參數調用:
key
:組的 key ;element
:在該組中遇到的第一個元素。
如果 destination 映射已經有一個對應於某個鍵的值,則該值將用作該組的累加器的初始值,並且不會為該組調用 initialValueSelector 函數。
返回 destination 映射,將每個組的鍵與累積組元素的結果相關聯。
用法二
inline fun <T, K, R, M : MutableMap<in K, R>> Grouping<T, K>.foldTo(
destination: M,
initialValue: R,
operation: (accumulator: R, element: T) -> R
): M
通過鍵對來自Grouping 源的元素進行分組,並將operation 依次應用於每個組的元素,將先前累積的值和當前元素作為參數傳遞,並將結果存儲在給定的destination 映射中。累加器的初始值對於每個組都是相同的initialValue。
如果destination 映射已經有一個對應於某個組的鍵的值,則該值用作該組的累加器的初始值。
例子:
fun main(args: Array<String>) {
//sampleStart
val fruits = listOf("apple", "apricot", "banana", "blueberry", "cherry", "coconut")
// collect only even length Strings
val evenFruits = fruits.groupingBy { it.first() }
.foldTo(mutableMapOf(), emptyList<String>()) { acc, e -> if (e.length % 2 == 0) acc + e else acc }
println(evenFruits) // {a=[], b=[banana], c=[cherry]}
evenFruits.clear() // evenFruits is a mutable map
//sampleEnd
}
輸出:
{a=[], b=[banana], c=[cherry]}
參數
返回 destination 映射,將每個組的鍵與累積組元素的結果相關聯。
相關用法
- Kotlin fold用法及代碼示例
- Kotlin forEach用法及代碼示例
- Kotlin filterNot用法及代碼示例
- Kotlin filterNotTo用法及代碼示例
- Kotlin filterKeys用法及代碼示例
- Kotlin flatten用法及代碼示例
- Kotlin filterTo用法及代碼示例
- Kotlin filterNotNull用法及代碼示例
- Kotlin filterIsInstance用法及代碼示例
- Kotlin filterIsInstanceTo用法及代碼示例
- Kotlin findLast用法及代碼示例
- Kotlin flatMap用法及代碼示例
- Kotlin find用法及代碼示例
- Kotlin firstNotNullOf用法及代碼示例
- Kotlin firstNotNullOfOrNull用法及代碼示例
- Kotlin filterNotNullTo用法及代碼示例
- Kotlin filterIndexedTo用法及代碼示例
- Kotlin filterValues用法及代碼示例
- Kotlin filter用法及代碼示例
- Kotlin flatMapIndexed用法及代碼示例
- Kotlin filterIndexed用法及代碼示例
- Kotlin associateBy用法及代碼示例
- Kotlin all用法及代碼示例
- Kotlin map用法及代碼示例
- Kotlin reduceRight用法及代碼示例
注:本文由純淨天空篩選整理自kotlinlang.org大神的英文原創作品 kotlin.collections.foldTo。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。