1 回答

TA貢獻(xiàn)1874條經(jīng)驗(yàn) 獲得超12個(gè)贊
您可以使用.reduce(Integer::sum)內(nèi)部通量來執(zhí)行窗口中元素的總和,并.flatMap使用外部通量將這些總和合并回單個(gè)流。
請注意,由于.window調(diào)用 with maxSize < skip,因此尾隨窗口中的項(xiàng)目將小于最大大小。
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();
添加回答
舉報(bào)