Java 8 Streams非常强大,但当不需要并行性时,Kotlin Sequence似乎更易于使用。
有没有办法将stream.sequencial()
转换为序列?
答案 0 :(得分:16)
您可以从流中获取迭代器,然后将迭代器包装到Sequence
:
Sequence { stream.iterator() }
UPD:从Kotlin 1.1开始,您可以使用Stream.asSequence()
扩展名(请参阅Michael Richardson's answer),其功能与上述完全相同。该扩展程序也适用于专业流:IntStream
,LongStream
和DoubleStream
。
它位于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