文章0 | 阅读 9575 | 点赞0
在Stream中我们可以通过flatMap将多维数据打开降维,扁平化处理数据为一维数据。Reactor当然也有这种需求,我们可以使用flatMap和concatMap进行数据的降维处理
flatMap示意图:
concatMap示意图:
flatMapSequential示意图:
根据示意图可以清楚的看出这三个方法的异同:
import lombok.extern.slf4j.Slf4j;
import org.junit.jupiter.api.Test;
import reactor.core.publisher.Flux;
import java.time.Duration;
import java.util.Arrays;
/**
* @author: ffzs
* @Date: 2020/8/7 下午8:18
*/
@Slf4j
public class FlatMapTest {
@Test
public void flatMap () throws InterruptedException {
Flux.just("abcd", "ffzs")
.flatMap(i -> Flux.fromArray(i.split("")).delayElements(Duration.ofMillis(10)))
.subscribe(i -> System.out.print("->"+i));
Thread.sleep(100);
}
@Test
public void flatMapSequential () throws InterruptedException {
Flux.just("abcd", "ffzs")
.flatMapSequential(i -> Flux.fromArray(i.split("")).delayElements(Duration.ofMillis(10)))
.subscribe(i -> System.out.print("->"+i));
Thread.sleep(100);
}
@Test
public void flatMapIterable () {
Flux.just("abcd", "ffzs")
.flatMapIterable(i -> Arrays.asList(i.split("")))
.subscribe(i -> System.out.print("->"+i));
}
@Test
public void concatMap () throws InterruptedException {
Flux.just("abcd", "ffzs")
.concatMap(i -> Flux.fromArray(i.split("")).delayElements(Duration.ofMillis(10)))
.subscribe(i -> System.out.print("->"+i));
Thread.sleep(110);
}
@Test
public void concatMapIterable () {
Flux.just("abcd", "ffzs")
.concatMapIterable(i -> Arrays.asList(i.split("")))
.subscribe(i -> System.out.print("->"+i));
}
}
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://fanfanzhisu.blog.csdn.net/article/details/107889953
内容来源于网络,如有侵权,请联系作者删除!