如何将java.util.stream.Stream <something>转换为kotlin.Sequence <something>

时间:2016-04-27 14:08:24

标签: java java-stream kotlin

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

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

2 个答案:

答案 0 :(得分:16)

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

Sequence { stream.iterator() }

UPD:从Kotlin 1.1开始,您可以使用Stream.asSequence()扩展名(请参阅Michael Richardson's answer),其功能与上述完全相同。该扩展程序也适用于专业流:IntStreamLongStreamDoubleStream

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

答案 1 :(得分:7)

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

val seq = stream.asSequence()

然后按预期使用:

clear:right