Группирование
interface Grouping<T, out K>
Представляет источник элементов с функцией keyOf, которая может быть применена к каждому элементу для получения его ключа.
Структура Grouping служит промежуточным этапом в операциях группировки и сворачивания: она группирует элементы по их ключам и затем сворачивает каждую группу с помощью некоторой агрегирующей операции.
Она создается путём присоединения функции keySelector: (T) -> K к источнику элементов. Для получения экземпляра Grouping используйте одну из groupingBy расширяющих функций:
Список доступных операций группировки и сворачивания см. в разделе расширяющих функций для Grouping.
Функции
keyOf
Извлекает ключ элемента element.
abstract fun keyOf(element: T): K
sourceIterator
Возвращает итератор Iterator по элементам источника этой группировки.
abstract fun sourceIterator(): Iterator<T>
Расширяющие функции
aggregate
Группирует элементы из источника Grouping по ключу и применяет операцию к элементам каждой группы последовательно, передавая предыдущее накопленное значение и текущий элемент в качестве аргументов, и сохраняет результаты в новой карте.
fun <T, K, R> Grouping<T, K>.aggregate( operation: (key: K, accumulator: R?, element: T, first: Boolean) -> R ): Map<K, R>
aggregateTo
Группирует элементы из источника Grouping по ключу и применяет операцию к элементам каждой группы последовательно, передавая предыдущее накопленное значение и текущий элемент в качестве аргументов, и сохраняет результаты в заданной целевой карте.
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
eachCountTo
fold
Группирует элементы из источника Grouping по ключу и применяет операцию к элементам каждой группы последовательно, передавая предыдущее накопленное значение и текущий элемент в качестве аргументов, и сохраняет результаты в новой карте. Начальное значение аккумулятора предоставляется функцией initialValueSelector.
fun <T, K, R> Grouping<T, K>.fold( initialValueSelector: (key: K, element: T) -> R, operation: (key: K, accumulator: R, element: T) -> R ): Map<K, R>
Группирует элементы из источника Grouping по ключу и применяет операцию к элементам каждой группы последовательно, передавая предыдущее накопленное значение и текущий элемент в качестве аргументов, и сохраняет результаты в новой карте. Начальное значение аккумулятора — то же initialValue для каждой группы.
fun <T, K, R> Grouping<T, K>.fold( initialValue: R, operation: (accumulator: R, element: T) -> R ): Map<K, R>
foldTo
Группирует элементы из источника Grouping по ключу и применяет операцию к элементам каждой группы последовательно, передавая предыдущее накопленное значение и текущий элемент в качестве аргументов, и сохраняет результаты в заданной целевой карте. Начальное значение аккумулятора предоставляется функцией initialValueSelector.
fun <T, K, R, M : MutableMap<in K, R>> Grouping<T, K>.foldTo( destination: M, initialValueSelector: (key: K, element: T) -> R, operation: (key: K, accumulator: R, element: T) -> R ): M
Группирует элементы из источника Grouping по ключу и применяет операцию к элементам каждой группы последовательно, передавая предыдущее накопленное значение и текущий элемент в качестве аргументов, и сохраняет результаты в заданной целевой карте. Начальное значение аккумулятора — то же initialValue для каждой группы.
fun <T, K, R, M : MutableMap<in K, R>> Grouping<T, K>.foldTo( destination: M, initialValue: R, operation: (accumulator: R, element: T) -> R ): M
reduce
Группирует элементы из источника Grouping по ключу и применяет операцию reduce к элементам каждой группы последовательно, начиная со второго элемента группы, передавая предыдущее накопленное значение и текущий элемент в качестве аргументов, и сохраняет результаты в новой карте. Начальное значение аккумулятора — первый элемент группы.
fun <S, T : S, K> Grouping<T, K>.reduce( operation: (key: K, accumulator: S, element: T) -> S ): Map<K, S>
reduceTo
Группирует элементы из источника Grouping по ключу и применяет операцию отображении. Начальное значение аккумулятора — это первый элемент группы.
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
© 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/-grouping/index.html