Spec-Zone.ru › Kotlin 2

aggregateTo

kotlin-stdlib/kotlin.collections/aggregateTo

Начиная с Kotlin: 1.1

inline fun <T, K, R, M : MutableMap<in K, R>> Grouping<T, K>.aggregateTo(destination: M, operation: (key: K, accumulator: R?, element: T, first: Boolean) -> R): M

Группирует элементы источника Grouping по ключу и последовательно применяет операцию к элементам каждой группы, передавая в качестве аргументов предыдущее накопленное значение и текущий элемент, а результаты сохраняет в указанной карте назначения.

Ключ для каждого элемента предоставляется функцией Grouping.keyOf.

Результат

карта назначения, связывающая ключ каждой группы с результатом агрегирования элементов этой группы.

Параметры

operation

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

  • key: ключ группы, к которой принадлежит этот элемент;

  • accumulator: текущее значение аккумулятора группы; оно может быть null, если это первый element, встретившийся в группе;

  • element: элемент исходной последовательности, для которой выполняется агрегирование;

  • first: указывает, является ли этот элемент первым element, встретившимся в группе.

Если в карте назначения уже есть значение для некоторого ключа, элементы, агрегируемые для этого ключа, никогда не рассматриваются как first.

Примеры


fun main() { 
   //sampleStart 
   val numbers = listOf(3, 4, 5, 6, 7, 8, 9)

val aggregated = numbers.groupingBy { it % 3 }.aggregateTo(mutableMapOf()) { 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]

// aggregated is a mutable map
aggregated.clear() 
   //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-to.html

Spec-Zone.ru

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