Kotlin 对于Dart';s List.expand()方法?

Kotlin 对于Dart';s List.expand()方法?,kotlin,Kotlin,在Dart中,List.expand()允许将现有列表中的每个元素映射为零个、一个或多个元素,然后将它们组合为新的Iterable。比如, var a=[1,2,3]; var b = a.expand((i)=>List.generate(i,(_)=>i.toString())).toList(); print(b.toString()); //Output: [1, 2, 2, 3, 3, 3] 基本上,增强的map()函数允许“一对多”映射 如果我想这样做,Kotlin的等

在Dart中,List.expand()允许将现有列表中的每个元素映射为零个、一个或多个元素,然后将它们组合为新的Iterable。比如,

var a=[1,2,3];
var b = a.expand((i)=>List.generate(i,(_)=>i.toString())).toList();
print(b.toString());
//Output: [1, 2, 2, 3, 3, 3]
基本上,增强的
map()
函数允许“一对多”映射

如果我想这样做,Kotlin的等价物是什么?我在Kotlin集合中找不到相应的方法。

:

fun main(args:Array){
val a=listOf(0,1,2,3)//listOf(1,2,3)
valb=a.flatMap({i->
清单(i){i}
})
println(b)
}
> [1, 2, 2, 3, 3, 3]

List(i){i}
用于列表生成器。打开此代码

你的意思是
flatMap
(一对多映射)-flatMap是正确的答案,但我花了一段时间才理解它。关键是lambda必须返回一个list/iteratior,即使是0或1个条目,例如listOf(1,2,3,4).flatMap{.listOf(it,it+1,it*1000)}=1,210000,2,32000,3,43000,4,54000。
fun main(args: Array<String>) {
    val a = listOf(0, 1, 2, 3) // listOf(1, 2, 3)
    val b = a.flatMap({i ->
        List(i) { i }
    })

    println(b)
}

> [1, 2, 2, 3, 3, 3]