Kotlin和parallelStream来阵列
我觉得我越来越偏向了。 我正在尝试利用Java parallelStream出于性能原因。
函数Specimen.pick()采样并返回一个Specimen的实例。 我想用parallelStream在更换池时将其并行化。
var pool: Array<Specimen> = Array(100_000) ..
这就是我在Kotlin写的:
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()
哪些工作,但似乎资源浪费,而不是直接进入阵列。 如果我让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 */)
所以也许这是为了Kotlin? 还是有更好的办法?
您不能使用数组构造函数引用,但每个方法引用都可以使用lambda表达式来表示:
.toArray<Person>({length -> arrayOfNulls(length)})