小编Car*_*ary的帖子

Project Reactor - 如何从 Java 8 流创建滑动窗口 Flux

Java 8 Streams 不允许重用。这就产生了一个关于如何在创建滑动窗口通量来计算像 x(i)*x(i-1) 这样的关系时重用流的难题。

以下代码基于移位运算符的思想。我使用 skip(1) 移动第一个流以创建第二个流。

Flux<Integer> primary = Flux.fromStream(IntStream.range(1, 10).boxed());
Flux<Integer> secondary = primary.skip(1);
primary.zipWith(secondary)
        .map(t -> t.getT1() * t.getT2())
        .subscribe(System.out::println);
Run Code Online (Sandbox Code Playgroud)

这是上述代码的可视化表示:

1 2 3 4 5 6 7 8 9 10
v v v v v v v v v v  skip(1)
2 3 4 5 6 7 8 9 10
v v v v v v v v v v  zipWith
1 2, 2 3, 3 4, 4 5, 5 6, 6 7, 7 …
Run Code Online (Sandbox Code Playgroud)

java project-reactor

6
推荐指数
1
解决办法
5325
查看次数

标签 统计

java ×1

project-reactor ×1