Tag: java stream

Java 8 stream.collect(Collectors.toMap())类似于kotlin

假设我有一个人员列表,并希望有Map<String, Person> ,其中String是人名。 我应该怎么做在科特林?

限制在Kotlin中的功能

Java 8中有一个流方法的limit : package com.concretepage.util.stream; import java.util.Arrays; import java.util.List; public class LimitDemo { public static void main(String[] args) { List<String> list = Arrays.asList("AA","BB","CC","DD","EE"); list.stream().limit(3).forEach(s->System.out.println(s)); } } 输出: AA BB CC Kotlin中的模拟名称是什么,或者如何以另一种方式做得更好?

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 }) […]

什么Java 8 Stream.collect等价物在标准Kotlin库中可用?

在Java 8中,有Stream.collect ,它允许在集合上进行聚合。 在Kotlin中,这不是以同样的方式存在,除了可能作为stdlib中扩展函数的集合。 但是不清楚不同用例的等价关系是什么。 例如, JavaDoc for Collectors的顶部是为Java 8编写的示例,将它们移植到Kolin时,不能在不同的JDK版本上使用Java 8类,因此可能应该使用不同的方式编写。 就在线资源展示Kotlin集合的例子而言,它们通常是微不足道的,并没有真正与相同的用例相比较。 什么是真正符合Java 8 Stream.collect记录的案例的好例子? 这里的列表是: 将名字积累到列表中 将名称累加到TreeSet中 将元素转换为字符串并连接它们,用逗号分隔 计算员工的工资总额 按部门分组员工 按部门计算工资总额 将学生划分为通过和失败 上面链接了JavaDoc中的细节。 注意: 这个问题是由作者故意写的和回答的( 自我回答的问题 ),所以对于常见的Kotlin话题的习惯性的回答是在SO中。 此外,为了澄清一些真正的古老的答案写为科特林的阿尔法,是不是今天的Kotlin准确。