0

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

这似乎很容易,但我想将我的流设计为如果通过流的整数匹配某些条件也立即终止。

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

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

4

1 回答 1

0

您正在寻找的是takeWhile运营商...

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

本文中的更多信息

于 2021-11-03T12:10:06.783 回答