aggregate
Начиная с Kotlin: 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 по ключу и последовательно применяет операцию к элементам каждой группы, передавая в качестве аргументов ранее накопленное значение и текущий элемент, и сохраняет результаты в новой карте.
Ключ каждого элемента возвращает функция Grouping.keyOf.
Возвращает
объект Map, связывающий ключ каждой группы с результатом агрегирования её элементов.
Параметры
функция вызывается для каждого элемента со следующими параметрами:
key: ключ группы, к которой принадлежит этот элемент;accumulator: текущее значение аккумулятора группы; может бытьnull, если это первыйelement, встретившийся в группе;element: агрегируемый элемент источника;first: указывает, является ли этот элемент первымelement, встретившимся в группе.
Примеры
fun main() {
//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
}
© 2010–2026 JetBrains s.r.o. and Kotlin Programming Language contributors
Licensed under the Apache License, Version 2.0.
https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.collections/aggregate.html