我正在使用 Java 并行流作为国际象棋引擎。该流用于评估给定移动列表中的每个国际象棋移动。每个 Move 都映射到一个代表 Move 值的 Integer,然后我将所有 Integer 收集到一个列表中,并返回列表中最大的 Integer。
这看起来很简单,但我想将我的流设计为如果通过流的整数符合特定条件,则立即终止。
例如,如果我有一个包含 100 个 Move 的列表要转换为流,如果其中任何 Move 映射到小于 4 的整数,我希望我的流立即终止,否则我想将这些整数收集到列表(这只是一个帮助澄清的示例)。
我不知道如何去做这件事(我考虑过短路操作,但我不知道在流不短路的情况下如何与收集器结合使用短路操作) 。我也很乐意澄清任何事情。谢谢!
您正在寻找的是
takeWhile
运算符...
Stream.of("cat", "dog", "elephant", "fox", "rabbit", "duck")
.takeWhile(n -> n.length() % 2 != 0)
.forEach(System.out::println);
更多信息请参见这篇文章