如何将 Streams Prev 元素结果传递给下一个

ray*_*man 4 java functional-programming java-8 java-stream

我有项目列表,我需要在每个项目上创建一些计算。每个计算都由前面的元素构建。

例如:

List<Object> Users=new ArrayList<>();
users.stream().filter(element->calculateSomething(<need-prev-element-input>).findFirst();
Run Code Online (Sandbox Code Playgroud)

calculateSomething 将返回 true/false 取决于流中的 prev 元素计算结果

知道我该怎么做吗?

Lou*_*man 6

设计成能够做到像这样的任何操作。你也许可以一起破解一些东西来做到这一点,但这会很糟糕;你应该回到使用普通循环代替。


Mis*_*sha 5

如果你真的想使用流,流过索引:

IntStream.range(1, users.size())
        .filter(i -> calculateSomething(users.get(i-1) , users.get(i)))
        .map(users::get)
        .findFirst();
Run Code Online (Sandbox Code Playgroud)

还有许多非标准库可让您从列表中流式传输对。