Spec-Zone.ru › Kotlin 1.7

reduceTo

kotlin-stdlib / kotlin.collections / reduceTo
Требования к платформе и версии: JVM (1.1), JS (1.1), Native (1.1)
inline fun <S, T : S, K, M : MutableMap<in K, S>> Grouping<T, K>.reduceTo(
    destination: M, 
    operation: (key: K, accumulator: S, element: T) -> S
): M

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

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



fun main(args: Array<String>) {
//sampleStart
val animals = listOf("raccoon", "reindeer", "cow", "camel", "giraffe", "goat")
val maxVowels = mutableMapOf<Char, String>()

// grouping by first char and collect only max of contains vowels
val compareByVowelCount = compareBy { s: String -> s.count { it in "aeiou" } }

animals.groupingBy { it.first() }.reduceTo(maxVowels) { _, a, b -> maxOf(a, b, compareByVowelCount) }

println(maxVowels) // {r=reindeer, c=camel, g=giraffe}

val moreAnimals = listOf("capybara", "rat")
moreAnimals.groupingBy { it.first() }.reduceTo(maxVowels) { _, a, b -> maxOf(a, b, compareByVowelCount) }

println(maxVowels) // {r=reindeer, c=capybara, g=giraffe}
//sampleEnd
}

Параметры

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

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

© 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/reduce-to.html

Spec-Zone.ru

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