java - 如果我通过依赖于输入的谓词限制它,我可以计算我的流大小吗?

标签 java java-8 functional-programming java-stream

我想制作一个带有随机数的流。一旦数字满足特定条件,我现在想知道需要多少次迭代。 因此,我要么想要流的大小,要么想要一个我可以从中读取大小的集合。

这是我的方法:

random.ints(0, Integer.MAX_VALUE).anyMatch(a -> {return a < 20000;});

一旦我的条件满足,这只会给我一个 boolean 值。

random.ints(0, Integer.MAX_VALUE).filter(a -> a < 20000).limit(1).count();

这显然返回 1。但我想在过滤结果之前获得大小。我进一步尝试了一些带有计数变量的东西,但是由于 lambdas 从外部最终有效地捕获了它们,所以我遇到了初始化问题。

感谢任何帮助或提示

最佳答案

Java 9 有一个功能支持 - takeWhile :

random.ints(0, Integer.MAX_VALUE).takeWhile(a -> a < 20000).count();

关于java - 如果我通过依赖于输入的谓词限制它,我可以计算我的流大小吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47868812/

相关文章:

java - 随机爬山法

java - 去掉JTabbedPane "currently selected"虚线

java - 将 lambda 传递给 Timer 而不是 TimerTask

java - 常见 io copyUrlToFile 不起作用

haskell - 仿函数和内仿函数之间的区别

functional-programming - 函数式编程是自然语言编程的下一步吗?

java - Java 将子数组复制到已初始化数组的方法

java - 交替多次try catch处理异常

haskell - 如何从 Haskell 中任意类型 [a] 的标准输入中读取列表?

资源文件中的 Java 菜单助记符