在kotlin中映射可数1到n

在kotlin中映射可数1到n,kotlin,iterable,Kotlin,Iterable,我想做的是使用Iterable.map,但不是将每个值转换为一个新值,而是将一个值转换为多个新值 例如: val myList = listOf("test", "123", "another.test", "test2") val result = myList.map { if(it.contains(".")) { return@map it.split(".") } else { return@map it } } //desire

我想做的是使用
Iterable.map
,但不是将每个值转换为一个新值,而是将一个值转换为多个新值

例如:

val myList = listOf("test", "123", "another.test", "test2")
val result = myList.map {
    if(it.contains(".")) {
        return@map it.split(".")
    } else {
        return@map it
    }
}
//desired output: ["test", "123", "another", "test", "test2"]
此代码将生成一个包含字符串和字符串列表的列表(键入
Any


我怎样才能最优雅地实现这一点呢?

一种快速实现这一点的方法是使用
flatMap

val output = myList.flatMap { if(it.contains(".")) it.split(".") else listOf(it) }
flatMap
方法使用给定函数变换每个元素,然后将结果展平到单个列表中