-1

我有一个 Flux 会发出一些元素,为了简单起见假设一个Flux<String> -> "1", "2", "3", "n"

我需要做的是获取两个连续的元素并应用一个操作(例如 flatMap),它将从中生成一些元素。再次假设该函数将第一个元素与第二个元素连接起来,将第二个元素与第一个元素连接起来:

f(x,y) -> "xy", "yx"

所以从原始 Flux 发出的最终序列应该是:

"12" - "21" - "23" - "32" - "3n" - "n3"

怎么可能做到这一点?

4

1 回答 1

0

使用解决buffer(2, 1)

fun main() {
    val flux = listOf("1", "2", "3", "4").toFlux()
    flux.buffer(2, 1)
            .flatMap {
                if (it.size == 2) {
                    listOf(it[0] + it[1], it[1] + it[0]).toFlux()
                } else {
                    Flux.empty()
                }
            }.doOnNext { println(it) }
            .subscribe()
}
于 2020-09-04T21:10:56.420 回答