Kotlin flatMap - 地图

Fra*_*ero 14 kotlin

假设我有一个30k大小的列表,我想对列表中所有可能的对执行操作.所以我有:

 list.asSequence().flatMap { i -> 
         list.asSequence().map { j -> /* perform operation here */ }
 }
Run Code Online (Sandbox Code Playgroud)

问题1: 我有什么可以作为替代方案吗?(如应用函子).

我还注意到这个flatMap-map操作比命令式循环版本慢得多.(也许是因为关闭?)

for(i in list){
    for(j in list){

    }
}
Run Code Online (Sandbox Code Playgroud)

问题2:有没有办法提高flatMap/map版本的性能?

Ily*_*lya 1

回答问题 2,我们正在考虑添加flatMap重载,该重载不会为外部集合/序列中的每个元素创建闭包:https ://youtrack.jetbrains.com/issue/KT-8602

但如果您想对每一对执行一些副作用,而不是转换序列,我建议坚持使用for循环或内联forEachlambda,它们实际上是相同的。