我想我被排挤了。出于性能方面的原因,我试图使用。
一个函数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)哪些错误出现在::new上
相反,我必须在列表和数组之间来回切换:
pool = pool.asList().parallelStream().map { Specimen.pick(pool, wheel, r.split()) }.collect(Collectors.toList()).toTypedArray()这是可行的,但似乎是资源浪费,而不是直接转到Array。如果我让IntelliJ尝试对这方面的一个Java示例进行Kotlinize化:
爪哇:
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的?或者还有其他更好的方法?
发布于 2017-09-03 13:11:25
不能使用数组构造函数引用,但每个方法引用都可以使用lambda表达式表示:
.toArray<Person>({length -> arrayOfNulls(length)})https://stackoverflow.com/questions/46023602
复制相似问题