Kotlin y parallelStream toArray

Creo que me estoy desviado. Estoy tratando de utilizar Java parallelStream por razones de performance.

Una function Specimen.pick () muestrea y devuelve una instancia de la muestra . Quiero paralizar esto con parallelStream al replace el grupo .

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

Esto es lo que bash escribir en Kotlin:

 pool = pool.asList().parallelStream().map { Specimen.pick(pool, wheel, r.split()) }.toArray(Specimen::new) 

Que errores en :: nuevo

En cambio, tengo que hacer malabares entre la list y la matriz:

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

Lo cual funciona, pero parece un desperdicio de resources en lugar de ir directamente a Array. Si dejo que IntelliJ intente Kotlinize un ejemplo de Java de esto:

Java:

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

Transformación IntelliJ:

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

¿Entonces quizás esto sea para Kotlin? ¿O hay otra forma mejor?

No puede usar una reference de constructor de matriz, pero cada reference de método se puede express utilizando una expresión lambda:

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