我想知道是否有办法添加针对方法 takeWhile() 的条件测试的流的最后一个元素。我相信我想实现类似于 RxJava 的 takeUntil() 方法的东西。
我猜没有直接的方法可以做到这一点(如果我错了,请纠正我),但我想知道是否有适当的解决方法来实现这一点,我现在知道了。
我在 Stackoverflow 中进行了搜索,但几乎没有成功。如果您认为有可以解决我的问题的线程,我当然希望看到它。
如果您查看以下代码的 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));
Run Code Online (Sandbox Code Playgroud)
预期结果是根据 takeWhile 的条件检查的最后一个元素到达 forEach 的 System.out::println。在这种情况下,它是 5。
谢谢大家!