小编Oma*_*Ham的帖子

Java 8流限制功能是否有任何等效的Kotlin功能

我试图在列表中找到符合条件(过滤)的前两个元素,为此我在kotlin中实现了以下代码:

val arr = 0 until 20

val res = arr.filter { i ->
        println("Filter: $i")
        i % 2 == 0
    }.take(2)
Run Code Online (Sandbox Code Playgroud)

一切都很好,直到我意识到它过滤整个列表,无论是否找到了这两个元素.

使用Java 8 stream api,它按预期工作.

val res2 = arr.toList().stream()
     .filter { i ->
          println("Filter: $i")
          i % 2 == 0
     }.limit(2)
Run Code Online (Sandbox Code Playgroud)

所以我的问题是如果只使用Kotlin功能就可以实现.

我知道我可以使用一个简单的for循环,但我想使用函数式编程方法.

java functional-programming java-8 kotlin java-stream

5
推荐指数
2
解决办法
642
查看次数