2017-09-03 82 views
0

我覺得我越來越側面。我正在嘗試利用Java parallelStream出於性能原因。Kotlin和parallelStream toArray

函數Specimen.pick()取樣並返回實例樣本。 我想用parallelStream將其替換成pool

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

這就是我想在科特林寫:

pool = pool.asList().parallelStream().map { Specimen.pick(pool, wheel, r.split()) }.toArray(Specimen::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 */) 

所以,也許這是未來的科特林?或者還有另一種更好的方法?

回答

3

不能使用數組構造參考,但每個方法的參考可以利用lambda表達式來表示:

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