Reactor3 Map与FlatMap的区别示例详解

 更新时间:2023年08月23日 17:31:59   作者:Weison Wei  
这篇文章主要为大家介绍了Reactor3 Map与FlatMap的区别示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

Publisher Map 与 FlatMap的区别

环境信息:

JDK: Java 8
Reactor: Reactor 3.2.10.RELEASE

Gradle依赖:

compile group: 'io.projectreactor', name: 'reactor-core', version: '3.2.10.RELEASE'
compile 'ch.qos.logback:logback-classic:1.2.1'
testCompile 'io.projectreactor.addons:reactor-test'
testCompile 'junit:junit:4.12'

这几个代码的效果都一样,打印出11;

Mono.just("1").map(a -> a + "1").subscribe(System.out::println);
Mono.just("1").flatMap(a -> Mono.just(a + "1")).subscribe(System.out::println);
Flux.just("1").map(a -> a + "1").subscribe(System.out::println);
Flux.just("1").flatMap(a -> Flux.just(a + "1")).subscribe(System.out::println);

1 Mono

1.1 map()

Mono<String> monoMap = Mono.just("1").map(a -> a + "1");
monoMap.subscribe(System.out::println);

同步的转换发布的元素并返回。

1.2 flatMap()

Flux<String> monoFlatMap = Mono.just("1").flatMap(a -> Mono.just(a + "1"));
monoFlatMap.subscribe(System.out::println);

异步的转换发布的元素并返回一个新的Mono,被转换的元素和新Mono是动态绑定的。

2 Flux

2.1 map()

Mono<String> fluxMap = Flux.just("1").map(a -> a + "1");
fluxMap.subscribe(System.out::println);

同步的转换发布的元素并返回,转换完后被转换元素被丢弃。

2.2 flatMap()

Flux<String> fluxFlatMap = Flux.just("1").flatMap(a -> Flux.just(a + "1"));
fluxFlatMap.subscribe(System.out::println);

异步的转换发布的元素并他们展开合并到一个新的Flux并返回。

以上就是Reactor3 Map与FlatMap的区别示例详解的详细内容,更多关于Reactor3 Map FlatMap区别的资料请关注脚本之家其它相关文章!

相关文章

  • java基础之TreeMap实现类全面详解

    java基础之TreeMap实现类全面详解

    这篇文章主要为大家介绍了java基础之TreeMap实现类全面详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-12-12
  • java DOM4J 读取XML实例代码

    java DOM4J 读取XML实例代码

    最近学习Java,在处理XML文档的时候,查阅相关资料,发现了DOM4J这个jre库,相对C#的XML处理来说,功能还算是跟得
    2013-09-09
  • 一文详解SpringBoot3如何自定义starter

    一文详解SpringBoot3如何自定义starter

    在Spring Boot中,starter是一种特殊的依赖,它可以帮助开发人员快速引入和配置某个特定的功能模块,我们在面试中通过会被问到SpringBoot3如何自定义starter,所以本文小编给大家详细介绍了SpringBoot3自定义starter的步骤,需要的朋友可以参考下
    2024-09-09
  • JAVA 对象创建与对象克隆

    JAVA 对象创建与对象克隆

    这篇文章主要介绍了JAVA 对象创建与对象克隆,new 创建、反射、克隆、反序列化,克隆它分为深拷贝和浅拷贝,通过调用对象的 clone方法,进行对象的克隆,下面来看看文章的详细内容吧
    2022-02-02
  • Windows中使用Java生成Excel文件并插入图片的方法

    Windows中使用Java生成Excel文件并插入图片的方法

    这篇文章主要介绍了Windows中使用Java生成Excel文件并插入图片的方法,其中向Excel中插入图片文中通过使用Apache POI来实现,需要的朋友可以参考下
    2016-02-02
  • Nutz Dao与Spring集成实践

    Nutz Dao与Spring集成实践

    文章介绍了在集成Spring和Nutz时处理事务管理的几种方式,包括手动管理、Spring声明式事务管理以及将事务交给Spring管理的方法
    2026-02-02
  • Java实现一个简单的长轮询的示例代码

    Java实现一个简单的长轮询的示例代码

    长轮询是与服务器保持即时通信的最简单的方式,它不使用任何特定的协议,例如 WebSocket ,所以也不依赖于浏览器版本等外部条件的兼容性。本文将用Java实现一个简单的长轮询,需要的可以参考一下
    2022-08-08
  • Java使用arthas修改日志级别详解

    Java使用arthas修改日志级别详解

    在我们线上环境中,一般不会开启debug级别的日志,为了提高性能 info和warning级别的日志也一般不会打印出来,那么如果遇到线上问题,除了使用arthas定位问题,想通过查询日志来实现问题定位,如何查看logger信息,更新logger level呢,下面我们来了解arthas修改日志级别
    2022-06-06
  • Java设计模式中代理模式应用详解

    Java设计模式中代理模式应用详解

    代理模式(Proxy Parttern)为一个对象提供一个替身,来控制这个对象的访问,即通过代理对象来访问目标对象。本文将通过示例详细讲解一下这个模式,需要的可以参考一下
    2022-11-11
  • Java编程泛型限定代码分享

    Java编程泛型限定代码分享

    这篇文章主要介绍了Java编程泛型限定的相关内容,具有一定参考价值,需要的朋友可以了解下。
    2017-10-10

最新评论