Функция reduce

Функция reduce выполняет агрегацию элементов коллекции, последовательно применяя операцию к элементам и накапливая результат. Принимает лямбда-функцию с двумя параметрами: аккумулятор и текущий элемент. Возвращает финальное значение аккумулятора после обработки всех элементов. Работает с массивами Array, списками List и множествами Set.

Импорт

kotlinimport kotlin.collections.reduce

Синтаксис

kotlininline fun <S, T : S> Array<out T>.reduce(
  operation: (acc: S, T) -> S
): S
kotlininline fun <S, T : S> Iterable<T>.reduce(
  operation: (acc: S, T) -> S
): S

Пример

Найдем сумму всех элементов массива чисел:

kotlinval numbers = arrayOf(1, 2, 3, 4, 5)
val res = numbers.reduce { acc, num -> acc + num }
println(res)

Результат выполнения кода:

kotlinInt 15

Пример

Найдем произведение всех элементов списка:

kotlinval numbers = listOf(1, 2, 3, 4, 5)
val res = numbers.reduce { acc, num -> acc * num }
println(res)

Результат выполнения кода:

kotlinInt 120

Пример

Объединим все строки множества в одну:

kotlinval words = setOf("Hello", " ", "World", "!")
val res = words.reduce { acc, word -> acc + word }
println(res)

Результат выполнения кода:

kotlinString "Hello World!"

Пример

Найдем максимальный элемент в массиве:

kotlinval numbers = arrayOf(10, 5, 25, 3, 15)
val res = numbers.reduce { acc, num -> if (num > acc) num else acc }
println(res)

Результат выполнения кода:

kotlinInt 25

Важно

Функция reduce бросает исключение UnsupportedOperationException при вызове на пустой коллекции. Для безопасной работы с возможными пустыми коллекциями используйте reduceOrNull:

kotlinval emptyList = emptyList<Int>()
val res = emptyList.reduceOrNull { acc, num -> acc + num }
println(res)

Результат выполнения кода:

kotlinnull

Смотрите также

  • функцию fold,
    которая принимает начальное значение аккумулятора