Запись на курсы по HTML, CSS, JavaScript, PHP, Python, фреймворкам и CMS,
а также: помощь в поиске работы и заказов, стажировка на реальных проектах→
411 of 1310 menu
Бесплатный тренинг по JavaScript: работа с Drag-and-Drop. Начало 2 октября. Жми для записи!

Функция flatMap

Функция flatMap применяет заданную функцию-преобразователь к каждому элементу исходной коллекции. Функция-преобразователь должна возвращать итерируемый объект Iterable (например, список, множество или массив). Все полученные итерируемые объекты объединяются в один плоский список.

Импорт

import kotlin.collections.flatMap

Синтаксис

// Для List, Set, Array и других Iterable inline fun <T, R> Iterable<T>.flatMap( transform: (T) -> Iterable<R> ): List<R>
// Для Map inline fun <K, V, R> Map<out K, V>.flatMap( transform: (Entry<K, V>) -> Iterable<R> ): List<R>
// Для Sequence inline fun <T, R> Sequence<T>.flatMap( transform: (T) -> Sequence<R> ): Sequence<R>

Пример

Преобразуем список чисел в список их квадратов и кубов:

val numbers = listOf(1, 2, 3) val res = numbers.flatMap { listOf(it * it, it * it * it) } println(res)

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

List<Int> [1, 1, 4, 8, 9, 27]

Пример

Разделим строки на символы и создадим общий список символов:

val words = listOf("abc", "def") val res = words.flatMap { it.toList() } println(res)

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

List<Char> ['a', 'b', 'c', 'd', 'e', 'f']

Пример

Работа с массивом Array:

val array = arrayOf(1, 2, 3) val res = array.flatMap { listOf(it, it + 10) } println(res)

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

List<Int> [1, 11, 2, 12, 3, 13]

Пример

Работа с множеством Set:

val set = setOf(1, 2, 3) val res = set.flatMap { setOf(it, it * 10) } println(res)

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

List<Int> [1, 10, 2, 20, 3, 30]

Пример

Работа с отображением Map:

val map = mapOf("a" to 1, "b" to 2) val res = map.flatMap { listOf(it.key, it.value.toString()) } println(res)

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

List<Any> ['a', '1', 'b', '2']

Для каких типов работает

Функция flatMap доступна для следующих типов коллекций:

  • Iterable (List, Set, MutableList, MutableSet)
  • Array
  • Map
  • Sequence

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

  • функцию map,
    которая преобразует элементы без слияния
  • функцию flatten,
    которая объединяет вложенные коллекции без преобразования
  • функцию filter,
    которая фильтрует элементы по условию
  • функцию groupBy,
    которая группирует элементы по ключу