Функция aggregate
Функция aggregate
выполняет агрегацию элементов коллекции
с помощью указанной операции и начального значения.
Применяется к коллекциям типа Array
, List
, Set
и Iterable
.
Функция последовательно применяет операцию к аккумулятору
и каждому элементу коллекции, возвращая конечный результат.
Синтаксис
inline fun <T, R> Array<out T>.aggregate(
initial: R,
operation: (acc: R, T) -> R
): R
inline fun <T, R> Iterable<T>.aggregate(
initial: R,
operation: (acc: R, T) -> R
): R
inline fun <T, R> List<T>.aggregate(
initial: R,
operation: (acc: R, T) -> R
): R
inline fun <T, R> Set<T>.aggregate(
initial: R,
operation: (acc: R, T) -> R
): R
Пример
Вычислим сумму чисел массива с помощью функции aggregate
:
val numbers = arrayOf(1, 2, 3, 4, 5)
val sum = numbers.aggregate(0) { acc, num -> acc + num }
println(sum)
Результат выполнения кода:
Int 15
Пример
Объединим строки списка в одну строку через запятую:
val letters = listOf('a', 'b', 'c', 'd', 'e')
val result = letters.aggregate("") { acc, char ->
if (acc.isEmpty()) char.toString()
else "$acc, $char"
}
println(result)
Результат выполнения кода:
String "a, b, c, d, e"
Пример
Найдем максимальное значение в наборе чисел:
val nums = setOf(10, 5, 8, 15, 3)
val max = nums.aggregate(Int.MIN_VALUE) { acc, num ->
if (num > acc) num else acc
}
println(max)
Результат выполнения кода:
Int 15
Пример
Посчитаем произведение всех элементов коллекции:
val values = listOf(2, 3, 4)
val product = values.aggregate(1) { acc, value -> acc * value }
println(product)
Результат выполнения кода:
Int 24
Для каких типов коллекций работает
Функция aggregate
работает со следующими типами коллекций:
Array
- массивы элементовList
- списки элементовSet
- наборы уникальных элементовIterable
- любые итерируемые коллекции