Функция flatten
Функция flatten преобразует коллекцию, содержащую другие коллекции,
в единую плоскую коллекцию. Она объединяет все элементы вложенных коллекций
в один общий список. Функция применяется к коллекциям типа
Iterable, Array,
List и >
Set.
Для Map функция flatten не работает напрямую.
Синтаксис
fun <T> Iterable<Iterable<T>>.flatten(): List<T>
fun <T> Array<out Array<out T>>.flatten(): List<T>
Пример
Преобразуем список списков в плоский список:
val nestedList = listOf(
listOf(1, 2, 3),
listOf(4, 5),
listOf(6, 7, 8, 9)
)
val res = nestedList.flatten()
println(res)
Результат выполнения кода:
List<Int> [1, 2, 3, 4, 5, 6, 7, 8, 9]
Пример
Преобразуем массив массивов в плоский список:
val nestedArray = arrayOf(
arrayOf('a', 'b', 'c'),
arrayOf('d', 'e'),
arrayOf('f', 'g', 'h')
)
val res = nestedArray.flatten()
println(res)
Результат выполнения кода:
List<Char> ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h']
Пример
Преобразуем множество множеств в плоский список:
val nestedSet = setOf(
setOf("apple", "banana"),
setOf("cherry", "date"),
setOf("elderberry", "fig")
)
val res = nestedSet.flatten()
println(res)
Результат выполнения кода:
List<String> ["apple", "banana", "cherry", "date", "elderberry", "fig"]
Пример
Для Map функция flatten не работает напрямую.
Сначала нужно преобразовать карту в коллекцию пар ключ-значение:
val map = mapOf(
"first" to listOf(1, 2, 3),
"second" to listOf(4, 5),
"third" to listOf(6, 7, 8)
)
val res = map.values.flatten()
println(res)
Результат выполнения кода:
List<Int> [1, 2, 3, 4, 5, 6, 7, 8]