当值符合条件时终止流,否则收集到集合中

问题描述 投票:0回答:1

我正在使用 Java 并行流作为国际象棋引擎。该流用于评估给定移动列表中的每个国际象棋移动。每个 Move 都映射到一个代表 Move 值的 Integer,然后我将所有 Integer 收集到一个列表中,并返回列表中最大的 Integer。

这看起来很简单,但我想将我的流设计为如果通过流的整数符合特定条件,则立即终止。

例如,如果我有一个包含 100 个 Move 的列表要转换为流,如果其中任何 Move 映射到小于 4 的整数,我希望我的流立即终止,否则我想将这些整数收集到列表(这只是一个帮助澄清的示例)。

我不知道如何去做这件事(我考虑过短路操作,但我不知道在流不短路的情况下如何与收集器结合使用短路操作) 。我也很乐意澄清任何事情。谢谢!

java java-stream short-circuiting
1个回答
1
投票

您正在寻找的是

takeWhile
运算符...

Stream.of("cat", "dog", "elephant", "fox", "rabbit", "duck")
  .takeWhile(n -> n.length() % 2 != 0)
  .forEach(System.out::println);

更多信息请参见这篇文章

© www.soinside.com 2019 - 2024. All rights reserved.