gpt4 book ai didi

kotlin - Kotlin和parallelStream toArray

转载 作者:行者123 更新时间:2023-12-02 13:06:39 27 4
gpt4 key购买 nike

我想我已经陷入困境。由于性能原因,我正在尝试利用Java parallelStream。

函数Specimen.pick()采样并返回Specimen的实例。
我想在替换池时使用parallelStream对此进行并行化。

var pool: Array<Specimen> = Array(100_000) .. 

这就是我要在Kotlin中编写的内容:
pool = pool.asList().parallelStream().map { Specimen.pick(pool, wheel, r.split()) }.toArray(Specimen::new)

:: new出现了哪些错误

相反,我不得不在列表和数组之间来回移动:
pool = pool.asList().parallelStream().map { Specimen.pick(pool, wheel, r.split()) }.collect(Collectors.toList()).toTypedArray()

哪个可行,但似乎浪费资源,而不是直接进入Array。如果我让IntelliJ尝试Kotlinize这样的Java示例:

Java:
Person[] men = people.stream()
.filter(p -> p.getGender() == MALE)
.toArray(Person[]::new);

IntelliJ转换:
val men = people.stream()
.filter({ p -> p.getGender() === MALE })
.toArray(Person[]::new /* Currently unsupported in Kotlin */)

所以也许这是 Kotlin 来的?还是还有另一种更好的方法?

最佳答案

您不能使用数组构造函数引用,但可以使用lambda表达式来表示每个方法引用:

.toArray<Person>({length -> arrayOfNulls(length)})

关于kotlin - Kotlin和parallelStream toArray,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46023602/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com