2017-09-03 3 views
0

私は横行していると思います。私はパフォーマンス上の理由からJavaのparallelStreamを利用しようとしています。KotlinとparallelStream toArray

A関数Specimen.pick()サンプルを返し、のサンプルを返します。標本プールを置き換えるときに、これをparallelStreamで並列化したいと思います。

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

これは私がKotlinに書き込みしようとしているものです:

上のエラーアウト
pool = pool.asList().parallelStream().map { Specimen.pick(pool, wheel, r.split()) }.toArray(Specimen::new) 

::

新しい代わりに、私はリストの間で前後にジャグリングしており、配列:動作しますが、無駄なrathe資源思わ

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

rはArrayに直接行くよりです。私はIntelliJのは、こののJavaの例をKotlinizeしてみましょう場合:

の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のために来ていますか?それとももっと良い方法がありますか?

答えて

3

あなたは配列コンストラクタの参照を使用することができないが、すべてのメソッド参照がラムダ式使用して表すことができる。

.toArray<Person>({length -> arrayOfNulls(length)}) 
関連する問題