1 回答
TA贡献1874条经验 获得超12个赞
您可以使用.reduce(Integer::sum)内部通量来执行窗口中元素的总和,并.flatMap使用外部通量将这些总和合并回单个流。
请注意,由于.window调用 with maxSize < skip,因此尾随窗口中的项目将小于最大大小。
Flux<Integer> sums = Flux.range(1, 8) // Flux<Integer>
.window(3, 1) // Flux<Flux<Integer>>
.flatMap(window -> window.reduce(Integer::sum)); // Flux<Integer>
StepVerifier.create(sums)
.expectNext(6) // 1+2+3
.expectNext(9) // 2+3+4
.expectNext(12) // 3+4+5
.expectNext(15) // 4+5+6
.expectNext(18) // 5+6+7
.expectNext(21) // 6+7+8
.expectNext(15) // 7+8
.expectNext(8) // 8
.verifyComplete();
添加回答
举报