gpt4 book ai didi

java - 是否有与 Java 8 Stream 限制函数等效的 Kotlin 函数

转载 作者:IT老高 更新时间:2023-10-28 13:46:20 24 4
gpt4 key购买 nike

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

val arr = 0 until 20

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

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

使用 Java 8 流 api,它按预期工作。

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

所以我的问题是它是否可以仅使用 Kotlin 函数来实现。

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

最佳答案

默认情况下,Kotlineagerly 执行此类操作,而 Java 中的 Streams惰性。如果您使用 sequences,您可以在 Kotlin 中具有相同的行为。 ,可以很容易地从 Arrays 或 Iterables 生成 asSequence() .

arr.asSequence().filter { i ->
println("Filter: $i")
i % 2 == 0
}.take(2).toList()

//Filter: 0
//Filter: 1
//Filter: 2

请注意,序列最后必须转换回列表。

您可以阅读详细信息here .

关于java - 是否有与 Java 8 Stream 限制函数等效的 Kotlin 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48491335/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com