Kotlin和parallelStream toArray

Kotlin和parallelStream toArray,kotlin,java-stream,Kotlin,Java Stream,我想我已经偏离正轨了。出于性能原因,我尝试使用Java并行流 函数sample.pick()对样本进行采样并返回样本的实例。 我想在替换池时将其与parallelStream并行化 在::new上出现了哪些错误 相反,我必须在列表和数组之间来回切换: pool = pool.asList().parallelStream().map { Specimen.pick(pool, wheel, r.split()) }.collect(Collectors.toList()).toTypedArra

我想我已经偏离正轨了。出于性能原因,我尝试使用Java并行流

函数sample.pick()对样本进行采样并返回样本的实例。 我想在替换池时将其与parallelStream并行化

在::new上出现了哪些错误

相反,我必须在列表和数组之间来回切换:

pool = pool.asList().parallelStream().map { Specimen.pick(pool, wheel, r.split()) }.collect(Collectors.toList()).toTypedArray()
这是可行的,但似乎浪费了资源,而不是直接进入阵列。如果我让IntelliJ尝试对这方面的Java示例进行Kotlinization:

爪哇:

IntelliJ转换:

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

也许这是给科特林的?或者还有其他更好的方法吗?

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

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

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

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