aggregate
Требования к платформе и версии: JVM (1.1), JS (1.1), Native (1.1)
inline fun <T, K, R> Grouping<T, K>.aggregate( operation: (key: K, accumulator: R?, element: T, first: Boolean) -> R ): Map<K, R>
Группирует элементы из источника Grouping по ключу и применяет operation к элементам каждой группы последовательно, передавая накопленное значение и текущий элемент в качестве аргументов, и сохраняет результаты в новой карте.
Ключ для каждого элемента предоставляется функцией Grouping.keyOf.
fun main(args: Array<String>) {
//sampleStart
val numbers = listOf(3, 4, 5, 6, 7, 8, 9)
val aggregated = numbers.groupingBy { it % 3 }.aggregate { key, accumulator: StringBuilder?, element, first ->
if (first) // first element
StringBuilder().append(key).append(":").append(element)
else
accumulator!!.append("-").append(element)
}
println(aggregated.values) // [0:3-6-9, 1:4-7, 2:5-8]
//sampleEnd
}Параметры
operation - функция вызывается для каждого элемента со следующими параметрами:
Возвращает Map, связывающую ключ каждой группы с результатом агрегации элементов группы.
© 2010–2023 JetBrains s.r.o. and Kotlin Programming Language contributors
Licensed under the Apache License, Version 2.0.
https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/aggregate.html