1 作用不同
1.2 映射?展平?
- map 只执行映射
- flatMap 既执行映射,也执行展平
什么叫只能执行映射?
我理解是把一个数据执行一个方法,转换成另外一个数据。举个例子:mapper 函数把输入的字符串转换成大写。map()方法执行这个 mapper 函数。
Function<String, String > mapper = String::toUpperCase;
Flux<String> inFlux = Flux.just("hello", ".", "com");
Flux<String> outFlux = inFlux.map(mapper);
// reactor 测试包提供的测试方法
StepVerifier.create(outFlux)
.expectNext("HELLO", ".", "COM")
.expectComplete()
.verify();
什么叫展平?
mapper 函数把字符串转成大写,然后分割成一个一个字符。
Function<String, Publisher<String>> mapper = s -> Flux.just(s.toUpperCase().split(""));
Flux<String> inFlux = Flux.just("hello", ".", "com");
// 这里只能使用 flatMap,因为参数是 Function<T, Publisher<V>> 形式
Flux<String> outFlux = inFlux.flatMap(mapper);
List<String> output = new ArrayList<>();
outFlux.subscribe(out

本文详细解析了Reactor中map和flatMap的区别,包括它们的作用、同步与异步特性、方法签名以及实际应用示例。map主要用于单一对象转换,而flatMap则能将单个输入转换为多个输出并进行展平。flatMap在处理流时是异步非阻塞的,可能导致原始顺序丢失,适合需要扁平化处理的情况。理解两者的差异对于有效利用Reactor处理数据流至关重要。
最低0.47元/天 解锁文章
1690

被折叠的 条评论
为什么被折叠?



