Функция reduce
Функция reduce
выполняет агрегацию элементов коллекции,
последовательно применяя операцию к элементам и накапливая результат.
Принимает лямбда-функцию с двумя параметрами: аккумулятор и текущий элемент.
Возвращает финальное значение аккумулятора после обработки всех элементов.
Работает с массивами Array
, списками List
и множествами Set
.
Импорт
import kotlin.collections.reduce
Синтаксис
inline fun <S, T : S> Array<out T>.reduce(
operation: (acc: S, T) -> S
): S
inline fun <S, T : S> Iterable<T>.reduce(
operation: (acc: S, T) -> S
): S
Пример
Найдем сумму всех элементов массива чисел:
val numbers = arrayOf(1, 2, 3, 4, 5)
val res = numbers.reduce { acc, num -> acc + num }
println(res)
Результат выполнения кода:
Int 15
Пример
Найдем произведение всех элементов списка:
val numbers = listOf(1, 2, 3, 4, 5)
val res = numbers.reduce { acc, num -> acc * num }
println(res)
Результат выполнения кода:
Int 120
Пример
Объединим все строки множества в одну:
val words = setOf("Hello", " ", "World", "!")
val res = words.reduce { acc, word -> acc + word }
println(res)
Результат выполнения кода:
String "Hello World!"
Пример
Найдем максимальный элемент в массиве:
val numbers = arrayOf(10, 5, 25, 3, 15)
val res = numbers.reduce { acc, num -> if (num > acc) num else acc }
println(res)
Результат выполнения кода:
Int 25
Важно
Функция reduce
бросает исключение UnsupportedOperationException
при вызове на пустой коллекции. Для безопасной работы с возможными пустыми
коллекциями используйте reduceOrNull
:
val emptyList = emptyList<Int>()
val res = emptyList.reduceOrNull { acc, num -> acc + num }
println(res)
Результат выполнения кода:
null
Смотрите также
-
функцию
fold
,
которая принимает начальное значение аккумулятора