Kotlin Stream窥视(...)方法

时间:2019-03-01 13:32:27

标签: java kotlin java-stream

在Kotlin中,什么是java.util.stream.Stream <>。peek(...)的最佳替代方法?

https://docs.oracle.com/javase/8/docs/api/java/util/stream/Stream.html#peek-java.util.function.Consumer-

似乎没有其他中间操作:

https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.streams/index.html

我发现只终止了forEach(...)

2 个答案:

答案 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") }

onEachpeek做的事。

事实:Kotlin还想在清楚Java会做同样的事情之前将其序列称为“流”,因此他们将其重命名为“ Sequences”。

答案 1 :(得分:0)

首先,与 Kotlin 中的 Java 不同,您可以对任何类型的集合进行流处理(map/reduce 操作),例如:

val list = ArrayList<Int>()
list.forEach {  }
list.onEach {  } 

但是,以这种方式定义的操作不会被延迟评估,如果我们需要通过应用方法 .asSequence() 并从集合生成流来进行延迟评估。

最后回答你的问题onEach()相当于peek()