在Kotlin中,什么是java.util.stream.Stream <>。peek(...)的最佳替代方法?
似乎没有其他中间操作:
https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.streams/index.html
我发现只终止了forEach(...)
答案 0 :(得分:9)
Kotlin中的Stream替代项是Sequences。
listOf(1, 2, 3, 4, 5)
.asSequence()
.filter { it < 3 }
.onEach { println("filtered $it") }
.map { it * 10 }
.forEach { println("final: $it") }
有onEach
做peek
做的事。
事实:Kotlin还想在清楚Java会做同样的事情之前将其序列称为“流”,因此他们将其重命名为“ Sequences”。
答案 1 :(得分:0)
首先,与 Kotlin 中的 Java 不同,您可以对任何类型的集合进行流处理(map/reduce 操作),例如:
val list = ArrayList<Int>()
list.forEach { }
list.onEach { }
但是,以这种方式定义的操作不会被延迟评估,如果我们需要通过应用方法 .asSequence()
并从集合生成流来进行延迟评估。
最后回答你的问题onEach()
相当于peek()