gpt4 book ai didi

Java Stream 相当于 ReactiveX Observable#scan

转载 作者:行者123 更新时间:2023-11-30 02:08:01 24 4
gpt4 key购买 nike

ReactiveX 有一个非常简洁的运算符,名为 Scan ,这类似于reduce,只不过它发出每个中间累加器。

我如何使用 Java Streams 来实现这一点? Stream#reduce不是我想要的,因为它返回 T :

T reduce(T identity, BinaryOperator<T> accumulator)

我想要的是返回 Stream<T> ,流的每一项都是 T每次调用 accumulator 时都会返回该值:

Stream.of(1, 2, 3)
.myScan(0, (accumulator, i) -> accumulator + i)
.collect(Collectors.toList()); // [1, 3, 6]

我可以做一些蹩脚的事情,比如减少 List ,然后转换回 Stream ,但这很难看。

最佳答案

尝试StreamEx 。我认为它提供了你想要的提取API:

List<Integer> result = StreamEx.of(1, 2, 3).scanLeft((i, j) -> i + j);
System.out.println(result); // [1, 3, 6]

关于Java Stream 相当于 ReactiveX Observable#scan,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50936854/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com