嗨,我有 1330 个对象的列表,并且想应用方法并获得集合作为结果。
val result = listOf1330
.asSequence()
.map {
someMethod(it)
}
val resultSet = result.toSet()
Run Code Online (Sandbox Code Playgroud)
它在没有 toSet 的情况下工作正常,但如果执行时间长了大约 10 倍。我已经使用序列来使它工作得更快,但结果我需要没有重复的列表(设置)。
简单地说:将序列转换为集合的最有效方法是什么?
val result = listOf1330.mapTo(HashSet()) { someMethod(it) }
Run Code Online (Sandbox Code Playgroud)
使用流或序列来实现转换的意义不大——您将需要集合中的所有元素,而不是几个。的mapTo(和map)功能是inline在科特林。这意味着代码将被替换到调用站点中,它不会多次创建和执行 lambda。我们mapTo用来避免toSet()函数完成集合的第二个副本。
该.parallelStream()可以添加更多的性能,如果你想在多个线程运行计算。衡量线程之间负载平衡的好坏仍然是一个好主意。性能可能取决于您调用它的集合实现类
| 归档时间: |
|
| 查看次数: |
989 次 |
| 最近记录: |