假设我有一个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版本的性能?
回答问题 2,我们正在考虑添加flatMap重载,该重载不会为外部集合/序列中的每个元素创建闭包:https ://youtrack.jetbrains.com/issue/KT-8602
但如果您想对每一对执行一些副作用,而不是转换序列,我建议坚持使用for循环或内联forEachlambda,它们实际上是相同的。
| 归档时间: |
|
| 查看次数: |
7537 次 |
| 最近记录: |