首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Flux.groupBy的好处是什么?还是列表分区?

Flux.groupBy的好处是什么?还是列表分区?
EN

Stack Overflow用户
提问于 2022-06-02 08:10:47
回答 1查看 176关注 0票数 -1

试图通过直接在Flux上进行分组来理解分组的好处,而不是收集所有元素,然后使用Java流函数groupingBy (或Kotlin partition,如下面的示例所示)对它们进行分组。

下面是两个例子:第一个是groupBy,第二个是partition。我想弄清楚什么时候该用什么。

代码语言:javascript
运行
复制
    @Test
    fun groupByTwoLists() {
        val numbers = (0..9).toList()

        Flux.fromIterable(numbers)
            .groupBy<Boolean> { it % 2 == 0 }
            .flatMap { group: GroupedFlux<Boolean, Int> ->
                if (group.key() == true) {
                    group.collectList().doOnNext { println("We are even") }
                } else {
                    group.collectList().doOnNext { println("We are odd") }
                }
            }
            .test()
            .expectNextCount(2)
            .verifyComplete()
    }

    @Test
    fun partitionLists() {
        val numbers = (0..9).toList()
        val (even, odd) = numbers.partition { it % 2 == 0 }

        val monoEven = Mono.just(even).doOnNext { println("We are even") }
        val monoOdd = Mono.just(odd).doOnNext { println("We are odd") }

        Flux.merge(monoEven, monoOdd)
            .test()
            .expectNextCount(2)
            .verifyComplete()
    }
EN

Stack Overflow用户

发布于 2022-06-07 10:55:06

我现在明白了。

当您有一个想要对每个组进行不同处理的流时,流量(由Flux.groupBy创建)是很好的。它允许您做诸如publishOn a Scheduler之类的事情。您可能希望在分组的每个类型上使用不同的Scheduler

我在最初的问题中给出的两个测试不是一个很好的例子,因为我使用的是一个有限的数字列表,而不是一个数据流。

下面是使用Flux.groupBy https://levelup.gitconnected.com/creating-a-flux-of-fluxes-with-project-reactors-group-by-method-37200bfc2a的一个很好的例子。

票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72472839

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档