Intereting Posts
Матч скобки kotlin способ Какой тип языка Котлин? Чистый ООП или функциональный почему SomeClass :: class – это KClass <SomeClass>, но this :: class – это KClass <out SomeClass> У kotlin coroutines есть асинхронный вызов с таймером? NullPointerException для android.support.v4.app.NotificationCompatBase $ Action.getIcon () При использовании сопрограмм kotlin, как я могу тестировать функцию, вызывающую функцию приостановки? Многостраничный запрос с обновлением @PartMap Ошибка в Kotlin (Android) Динамически загружать пружину xml config kotlin.TypeCastException: null не может быть применено к ненулевому типу com.midsizemango.databasekotlin.Note Применить @JvmStatic и @JvmField автоматически ко всем файлам в Котлине Может ли Kotlin или Swift разобрать JSON так же, как Javascript? Обзор кода Лучший способ использования SharedPreferences для решения MemoryLeak проекции не допускаются для непосредственных подтипов супертипа Kotlin – видимость атрибута для сопутствующего объекта Kotlin – NoSuchMethodError при создании экземпляра Throwable

Kotlin и parallelStream toArray

Я думаю, что меня отвлекает. Я пытаюсь использовать Java parallelStream по соображениям производительности.

Функция Specimen.pick () выполняет выборку и возвращает экземпляр образца . Я хочу, чтобы Parallize это с parallelStream при замене пула .

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

Это то, что я пытаюсь написать в Котлине:

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

Какие ошибки на :: new

Вместо этого я должен жонглировать между списком и массивом:

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

Это работает, но кажется ресурсом расточительным, а не прямым доступом к Array. Если я позволю IntelliJ попробовать 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 */) 

Так может быть, это для Котлина? Или есть другой лучший способ?

Вы не можете использовать ссылку на конструктор массива, но каждая ссылка метода может быть выражена с помощью выражения лямбда:

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