相关疑难解决方法(0)

通过谓词限制流

是否有Java 8流操作限制(可能是无限的)Stream直到第一个元素无法匹配谓词?

在Java 9中,我们可以使用takeWhile下面的示例来打印小于10的所有数字.

IntStream
    .iterate(1, n -> n + 1)
    .takeWhile(n -> n < 10)
    .forEach(System.out::println);
Run Code Online (Sandbox Code Playgroud)

由于Java 8中没有这样的操作,以一般方式实现它的最佳方法是什么?

java java-8 java-stream

179
推荐指数
9
解决办法
6万
查看次数

如何在Stream上短路减少?

假设我有一个布尔值流,我正在编写的reduce操作是||(OR).我能否以一种方式编写它,以便在true遇到值时至少放弃对某些元素的评估?

我正在寻找一些优化(可能是它是一个并行流),不一定是完全优化,虽然后者会很棒.

java java-8 java-stream

10
推荐指数
1
解决办法
2263
查看次数

Java Stream sum()短路

在做一个项目时,我写了这一行,基本上它决定了是否根据有多少孩子合并当前节点.

int succNodes = Arrays.stream(children).mapToInt(PRQuadNode::count).sum();
if (succNodes <= bucketingParam) { /* do something */ }
Run Code Online (Sandbox Code Playgroud)

问题是succNodes通常会明显大于bucketingParam.如果我已经找到了足够大的金额,那就没有必要继续计算了.如果我知道我将失败检查succNodes <= bucketingParam,那么启用流提前停止的最佳方法是什么?

注意:在这种情况下,孩子的总是4.

注2:PRQuadNode :: count是一个递归方法,它不是尾递归的.

java java-stream

7
推荐指数
1
解决办法
128
查看次数

标签 统计

java ×3

java-stream ×3

java-8 ×2