如何将java.util.stream.Stream<Something>转换为kotlin。顺序<某件事>

2022-09-03 12:47:57

Java 8 Streams功能强大,但是当不需要并行性时,Kotlin Sequence似乎更易于使用。

有没有办法将 a 转换为序列?stream.sequencial()


答案 1

您可以从流中获取迭代器,然后将迭代器包装为 :Sequence

Sequence { stream.iterator() }

UPD:从 Kotlin 1.1 开始,你可以使用扩展(参见 Michael Richardson 的答案),它的作用与上面完全相同。该扩展也可用于专用流:、 和 。Stream.asSequence()IntStreamLongStreamDoubleStream

它位于库(Kotlin 1.2 及更高版本)或库(仅限 Kotlin 1.1,在 Kotlin 1.2 及更高版本中已弃用)的包中。kotlin.streamskotlin-stdlib-jdk8kotlin-stdlib-jre8


答案 2

Kotlin 有一个扩展方法 asSequence() 将 Java 流转换为 Kotlin Sequence。根据我的经验,在我添加导入语句之前,它是不可发现的:

import kotlin.streams.*

然后只需按预期使用:

val seq = stream.asSequence()

推荐