【问题标题】:Is it possible to get result of partial sequential LongStream in streams API是否有可能在流 API 中获得部分顺序 LongStream 的结果
【发布时间】:2021-09-04 13:23:04
【问题描述】:

我有整数或长整数流。我想逐个添加流的元素,并在每次添加后将其与一个固定值进行比较,如果满足某些条件则需要中断添加并返回该值。如果我们使用归约,它将添加流的所有元素,但我想添加元素直到满足某些条件。

Ex
fixed value = 15
1,2,3,4,5,6 --> (1+2+3+4+5) = 15 at this point stop the addition and return this value of some other value like 1 if not equal 15 then return 0.


【问题讨论】:

标签: java-8 java-stream


【解决方案1】:

您想对累积和列表执行测试。假设您的信息流是:

var longs = LongStream.iterate(0, i -> i + 1);

This answer 提出了一种推导方法:

var ai = new AtomicLong();
var cumulativeSums = longs.map(ai::addAndGet);

然后您可以找到第一个匹配的值。

cumulativeSums.filter(x -> x >= 15).findFirst();

产生一个OptionalLong[15]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-07-25
    • 1970-01-01
    • 1970-01-01
    • 2010-12-06
    • 1970-01-01
    • 1970-01-01
    • 2020-08-29
    • 1970-01-01
    相关资源
    最近更新 更多