flatMap所在位置是kotlin.collections.flatMap,其相關用法介紹如下。

用法一

inline fun <T, R> Array<out T>.flatMap(
    transform: (T) -> Iterable<R>
): List<R>
inline fun <R> ByteArray.flatMap(
    transform: (Byte) -> Iterable<R>
): List<R>
inline fun <R> ShortArray.flatMap(
    transform: (Short) -> Iterable<R>
): List<R>
inline fun <R> IntArray.flatMap(
    transform: (Int) -> Iterable<R>
): List<R>
inline fun <R> LongArray.flatMap(
    transform: (Long) -> Iterable<R>
): List<R>
inline fun <R> FloatArray.flatMap(
    transform: (Float) -> Iterable<R>
): List<R>
inline fun <R> DoubleArray.flatMap(
    transform: (Double) -> Iterable<R>
): List<R>
inline fun <R> BooleanArray.flatMap(
    transform: (Boolean) -> Iterable<R>
): List<R>
inline fun <R> CharArray.flatMap(
    transform: (Char) -> Iterable<R>
): List<R>
@JvmName("flatMapSequence") inline fun <T, R> Array<out T>.flatMap(
    transform: (T) -> Sequence<R>
): List<R>
@ExperimentalUnsignedTypes inline fun <R> UIntArray.flatMap(
    transform: (UInt) -> Iterable<R>
): List<R>
@ExperimentalUnsignedTypes inline fun <R> ULongArray.flatMap(
    transform: (ULong) -> Iterable<R>
): List<R>
@ExperimentalUnsignedTypes inline fun <R> UByteArray.flatMap(
    transform: (UByte) -> Iterable<R>
): List<R>
@ExperimentalUnsignedTypes inline fun <R> UShortArray.flatMap(
    transform: (UShort) -> Iterable<R>
): List<R>

返回在原始數組的每個元素上調用 transform 函數的結果產生的所有元素的單個列表。

例子:

import kotlin.test.*

fun main(args: Array<String>) {
//sampleStart
val list = listOf("123", "45")
println(list.flatMap { it.toList() }) // [1, 2, 3, 4, 5]
//sampleEnd
}

輸出:

[1, 2, 3, 4, 5]

用法二

inline fun <T, R> Iterable<T>.flatMap(
    transform: (T) -> Iterable<R>
): List<R>
@JvmName("flatMapSequence") inline fun <T, R> Iterable<T>.flatMap(
    transform: (T) -> Sequence<R>
): List<R>

返回在原始集合的每個元素上調用 transform 函數的結果產生的所有元素的單個列表。

例子:

import kotlin.test.*

fun main(args: Array<String>) {
//sampleStart
val list = listOf("123", "45")
println(list.flatMap { it.toList() }) // [1, 2, 3, 4, 5]
//sampleEnd
}

輸出:

[1, 2, 3, 4, 5]

用法三

inline fun <K, V, R> Map<out K, V>.flatMap(
    transform: (Entry<K, V>) -> Iterable<R>
): List<R>

返回在原始Map的每個條目上調用 transform 函數的結果產生的所有元素的單個列表。

例子:

import kotlin.test.*
import java.util.*

fun main(args: Array<String>) {
//sampleStart
val map = mapOf("122" to 2, "3455" to 3)
println(map.flatMap { (key, value) -> key.take(value).toList() }) // [1, 2, 3, 4, 5]
//sampleEnd
}

輸出:

[1, 2, 3, 4, 5]

用法四

@JvmName("flatMapSequence") inline fun <K, V, R> Map<out K, V>.flatMap(
    transform: (Entry<K, V>) -> Sequence<R>
): List<R>

返回在原始Map的每個條目上調用 transform 函數的結果產生的所有元素的單個列表。

例子:

import kotlin.test.*

fun main(args: Array<String>) {
//sampleStart
val list = listOf("123", "45")
println(list.flatMap { it.toList() }) // [1, 2, 3, 4, 5]
//sampleEnd
}

輸出:

[1, 2, 3, 4, 5]