如何在Java中使用ThreadLocalRandom.current().ints(int,int)查找与特定表达式匹配的特定数字?

如何在Java中使用ThreadLocalRandom.current().ints(int,int)查找与特定表达式匹配的特定数字?,java,algorithm,java-stream,Java,Algorithm,Java Stream,我想使用ThreadLocalRandom.current().ints(int,int)生成ifinite IntStream,例如: ThreadLocalRandom.current().ints(0,20) 据我所知,这段代码将生成一个IntStream {2,7,4,0,5,9,3…} 然后我想得到与特定表达式匹配的第一个数字,例如 这个数字应该可以除以3 在这种情况下,数字应该是9。所以问题是,我如何使用流运算获得这个数字?因为返回一个无穷大,所以需要使用并短路它: Optional

我想使用ThreadLocalRandom.current().ints(int,int)生成ifinite IntStream,例如:

ThreadLocalRandom.current().ints(0,20)

据我所知,这段代码将生成一个IntStream
{2,7,4,0,5,9,3…}

然后我想得到与特定表达式匹配的第一个数字,例如

这个数字应该可以除以3

在这种情况下,数字应该是9。所以问题是,我如何使用流运算获得这个数字?

因为返回一个无穷大,所以需要使用并短路它:

OptionalInt divisibleByThree = ThreadLocalRandom.current()
    .ints(0, 20)
    .filter(i -> i % 3 == 0)
    .findFirst();
打印此文件可能会返回以下内容:

OptionalInt[12]

告诉我们您到目前为止做了什么,读了什么,尝试了什么。
在这种情况下,数字应该是9
-为什么
9
而不是
0
0
9
之前,…
然后我想得到与特定表达式匹配的第一个数字
-我想你应该使用
findFirst()
而不是
findAny()
,因为顺序至关重要。