ato*_*tok 13 java kotlin java-stream
Java 8 Streams非常强大,但是当不需要并行性时,Kotlin Sequence似乎更易于使用.
有没有办法将a stream.sequencial()转换为序列?
Ily*_*lya 17
您可以从流中获取迭代器,然后将迭代器包装到Sequence:
Sequence { stream.iterator() }
Run Code Online (Sandbox Code Playgroud)
UPD:从Kotlin 1.1开始你可以使用Stream.asSequence()扩展(参见Michael Richardson的回答),它与上面完全相同.该扩展还提供了专门的流:IntStream,LongStream和DoubleStream.
它位于kotlin.streams包在kotlin-stdlib-jdk8库(科特林1.2及以上)或在kotlin-stdlib-jre8库(科特林1.1只,在科特林1.2及以上建议使用).
Kotlin有一种asSequence()将Java流转换为Kotlin序列的扩展方法.根据我的经验,在我添加一个import语句之前它是不可发现的:
import kotlin.streams.*
Run Code Online (Sandbox Code Playgroud)
然后只需按预期使用:
val seq = stream.asSequence()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1583 次 |
| 最近记录: |