欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Reactor 3 (13): 数据收集 collect

程序员文章站 2022-03-21 13:50:41
有的时候流数据有需要转化为其他类型数据,同Stream相同,Reactor也有将数据进行收集的方法:collect () : 将数据根据给出的collector进行收集collectList() : 收集收集为list形式collectSortedList(): 数据收集为list并排序,需要给出排序规则collectMap(): 数据收集为Map形式,是key,value形式,因此如果有重复key会覆盖collectMultimap(): 数据收集为Map形式,是key,collection...

有的时候流数据有需要转化为其他类型数据,同Stream相同,Reactor也有将数据进行收集的方法:

  • collect () : 将数据根据给出的collector进行收集
  • collectList() : 收集收集为list形式
  • collectSortedList(): 数据收集为list并排序,需要给出排序规则
  • collectMap(): 数据收集为Map形式,是key,value形式,因此如果有重复key会覆盖
  • collectMultimap(): 数据收集为Map形式,是key,collection形式,如果有重复key值写在list中

collect()方法

图示:

Reactor 3 (13): 数据收集 collect

代码示例:

  • 需要注意的是收集后的为Mono
    @Test
    public void collectTest() {
        Mono<Set<String>> flux = Flux.just("ffzs", "vincent", "tony", "sleepycate")
                .collect(Collectors.toSet())
                .log();

        flux.subscribe();
    }

collectList() 方法

图示:

Reactor 3 (13): 数据收集 collect

代码示例:

  • 直接收集为Mono<List<>>
@Test
public void collectListTest() {
    Flux.just("ffzs", "vincent", "tony", "sleepycate")
            .collectList()
            .log()
            .subscribe();
}

Reactor 3 (13): 数据收集 collect

collectSortedList()方法

代码示例:

@Test
public void collectSortedListTest() {
    Flux.just("ffzs", "vincent", "tony", "sleepycate")
            .collectSortedList(Comparator.comparing(String::length))
            .log()
            .subscribe();
}

Reactor 3 (13): 数据收集 collect

结果为排过顺序的。

collectMap()方法

Reactor 3 (13): 数据收集 collect

代码示例:

  • 根据字符串的长度作为key
@Test
public void collectMapTest() {
    Flux.just("ffzs", "vincent", "tony", "sleepycate")
            .collectMap(String::length)
            .log()
            .subscribe();
}

Reactor 3 (13): 数据收集 collect

由于 ffzs和tony长度都是4,因此ffzs被tony覆盖掉了

collectMultimap()方法

Reactor 3 (13): 数据收集 collect

代码示例:

@Test
public void collectMultimapTest() {
    Flux.just("ffzs", "vincent", "tony", "sleepycate")
            .collectMultimap(String::length)
            .log()
            .subscribe();
}

Reactor 3 (13): 数据收集 collect

所有数据都收集到collection中

代码

github
gitee

本文地址:https://blog.csdn.net/tonydz0523/article/details/107892515

相关标签: Spring Reactor 3