Spec-Zone.ru › Kotlin 2

aggregate

kotlin-stdlib/kotlin.collections/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, связывающий ключ каждой группы с результатом агрегирования её элементов.

Параметры

operation

функция вызывается для каждого элемента со следующими параметрами:

  • 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API