Spec-Zone.ru › Kotlin 1.7

aggregateTo

kotlin-stdlib / kotlin.collections / aggregateTo
Требования к платформе и версии: JVM (1.1), JS (1.1), Native (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.



fun main(args: Array<String>) {
//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
}

Параметры

operation -

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

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

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

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

© 2010–2020 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-to.html

Spec-Zone.ru

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