Spec-Zone.ru › Kotlin 2

reduceTo

kotlin-stdlib/kotlin.collections/reduceTo

Версия Kotlin: 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 по ключу и последовательно применяет операцию редукции к элементам каждой группы, начиная со второго элемента группы, передавая ранее накопленное значение и текущий элемент в качестве аргументов, а результаты сохраняет в указанной карте назначения. Начальным значением аккумулятора является первый элемент группы.

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

Возвращает

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

Параметры

operation

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

  • accumulator: текущее значение аккумулятора группы;

  • element: элемент сворачиваемого источника;

Примеры


fun main() { 
   //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
}

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

Spec-Zone.ru

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