Запись на курсы по HTML, CSS, JavaScript, PHP, Python, фреймворкам и CMS,
а также: помощь в поиске работы и заказов, стажировка на реальных проектах→
439 of 1310 menu
Вступайте в телеграмм-канал сайта code.mu: новинки, статьи, интервью, задачи, бесплатные курсы и тренинги. Жми для вступления:)

Функция 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 - любые итерируемые коллекции

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

  • функцию fold,
    которая выполняет аналогичную операцию агрегации
  • функцию reduce,
    которая выполняет агрегацию без начального значения
  • функцию sum,
    которая вычисляет сумму элементов коллекции