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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。