Kotlin和parallelStream toArray

Peh*_*eje 1 kotlin java-stream

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

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

var pool: Array<Specimen> = Array(100_000) .. 
Run Code Online (Sandbox Code Playgroud)

这就是我要在Kotlin中编写的内容:

pool = pool.asList().parallelStream().map { Specimen.pick(pool, wheel, r.split()) }.toArray(Specimen::new)
Run Code Online (Sandbox Code Playgroud)

:: new出现了哪些错误

相反,我不得不在列表和数组之间来回移动:

pool = pool.asList().parallelStream().map { Specimen.pick(pool, wheel, r.split()) }.collect(Collectors.toList()).toTypedArray()
Run Code Online (Sandbox Code Playgroud)

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

Java:

Person[] men = people.stream()
                      .filter(p -> p.getGender() == MALE)
                      .toArray(Person[]::new);
Run Code Online (Sandbox Code Playgroud)

IntelliJ转换:

val men = people.stream()
            .filter({ p -> p.getGender() === MALE })
            .toArray(Person[]::new  /* Currently unsupported in Kotlin */)
Run Code Online (Sandbox Code Playgroud)

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