gpt4 book ai didi

java - 包含流的 takeWhile()

转载 作者:行者123 更新时间:2023-11-29 08:23:28 27 4
gpt4 key购买 nike

我想知道是否有办法添加根据方法 takeWhile() 的条件测试的流的最后一个元素。我相信我想实现类似于 RxJava 的 takeUntil() 方法的东西。

我猜没有直接的方法可以做到这一点(如果我弄错了请纠正我),但我想知道是否有我现在知道的适当的解决方法来实现这一点。

我搜索了整个 Stack Overflow,但几乎没有成功。如果您认为有线程可以解决我的问题,我当然很乐意看到。

如果您查看以下代码的 peek(),您会看到数字 5 已根据 takeWhile() 条件进行检查,但它从未到达 forEach():

IntStream.of(1, 3, 2, 5, 4, 6)
.peek(foo -> System.out.println("Peek: " + foo))
.takeWhile(n -> n < 5)
.forEach(bar -> System.out.println("forEach: " + bar));

预期结果是根据 takeWhile 的条件检查的最后一个元素到达 forEachSystem.out::println。在本例中为 5。

谢谢大家!

最佳答案

使用普通的流 API 没有方便的方法来做到这一点。在 an ugly way 中是可能的(您需要调整此实现,这只是一个普通的 takeWhile 为 Java 8“向后移植”)。

This guy写了一个流扩展库,其中有 takeWhileInclusive .

示例用法:

IntStreamEx.of(1, 3, 2, 5, 4, 6)
.peek(foo -> System.out.println("Peek: " + foo))
.takeWhileInclusive(n -> n < 5)
.forEach(bar -> System.out.println("forEach: " + bar));

关于java - 包含流的 takeWhile(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55453144/

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