首页 > 其他分享 >Reactor接口之三

Reactor接口之三

时间:2023-05-07 15:22:05浏览次数:38  
标签:10 Reactor 之三 接口 Flux range Test println void

defer

@Test
public void testDefer() {
    Flux.defer(() -> {
        return Flux.range(0,10);
    })
            .subscribe(System.out::println);
}

输出0到9。defer每次对结果Flux进行订阅时,懒惰地提供发布服务。因此实际的源实例化会推迟到每次订阅时。

collect

 @Test
public void testCollect() {
    Flux.range(1,10)
            .collect(Collectors.toList())
            .subscribe(System.out::println);
}

收集成List。输出[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]。打印的是List。

 

@Test
public void testCollect1() {
    Flux.just("a","b","c","a")
            .collect(Collectors.toSet())
            .subscribe(System.out::println);
}

收集成Set。打印[a, b, c]。

 

@Test
public void testCollect2() {
    Flux.range(1,10)
            .collectList()
            .subscribe(System.out::println);
}

collectList和collect(Collectors.toList())相同。

 

@Test
public void testCollect3() {
    Flux.range(1,10)
            .collect(Collectors.toMap(k -> k,k->k))
            .subscribe(System.out::println);
}

@Test
public void testCollect4() {
    Flux.range(1,10)
            .collectMap(k -> k,k->k)
            .subscribe(System.out::println);
}

以上两个功能相同,转化成Map。输出:{1=1, 2=2, 3=3, 4=4, 5=5, 6=6, 7=7, 8=8, 9=9, 10=10}

 

repeat

@Test
public void testRepeat() {
    Flux.range(1,10)
            .repeat()
            .subscribe(System.out::println);
}

无限重复Flux.range(1,10)。

 

@Test
public void testRepeat1() {
    Flux.range(1,10)
            .repeat(2)
            .subscribe(System.out::println);
}

先输出Flux.range(1,10),在重复Flux.range(1,10)两次,输出:

1
2
3
4
5
6
7
8
9
10
1
2
3
4
5
6
7
8
9
10
1
2
3
4
5
6
7
8
9
10

 

Filter

@Test
public void testFilter() {
    Flux.create(t -> {
                for (int i = 0; i < 10; i++) {
                    t.next(random.nextInt(100));
                }
            })
            .filter(k -> (int)k > 50)
            .subscribe(System.out::println);
}

过滤出满足条件的数据。filter筛选出大于50的数。

map

@Test
public void testMap() {
    Flux.create(t -> {
                for (int i = 0; i < 10; i++) {
                    t.next(random.nextInt(100));
                }
            })
            .map(k -> (int)k * (int)k)
            .subscribe(System.out::println);
}

map对数据做映射。上面例子对每个数求平方。

count

@Test
public void testCount() {
    Flux.range(1,10)
            .count()
            .subscribe(System.out::println);
}

计数。输出10

distinct

@Test
public void testDistinct() {
    Flux.just(1,1,2,3)
            .distinct()
            .subscribe(System.out::println);
}

去重。输出1,2,3

zip

@Test
public void testZip() {
    Flux.range(1,5)
            .zipWith(Flux.range(6,10))
            .subscribe(System.out::println);
}

zipWith类似拉链的作用,将两个Flux像拉链一样组合起来。用于将两个不同流速的Flux统一流速。输出:

[1,6]
[2,7]
[3,8]
[4,9]
[5,10]

 

@Test
public void testZip1() {
    Flux.range(1,5)
            .zipWith(Flux.range(6,12))
            .subscribe(System.out::println);
}

第二个Flux的数量多余第一个Flux数量。将第二个Flux多出的元素丢弃。输出:

[1,6]
[2,7]
[3,8]
[4,9]
[5,10]

 

@Test
public void testZip2() {
    Flux.range(1,8)
            .zipWith(Flux.range(6,10))
            .subscribe(System.out::println);
}

第一个Flux的数量多余第二个Flux数量。在这里将第二个Flux不足的元素继续递增。输出:

[1,6]
[2,7]
[3,8]
[4,9]
[5,10]
[6,11]
[7,12]
[8,13]

标签:10,Reactor,之三,接口,Flux,range,Test,println,void
From: https://www.cnblogs.com/shigongp/p/17379311.html

相关文章

  • 接口自动化 测试数据驱动 DDD模块使用
    一、DDT简单介绍名称:Data-DrivenTests,数据驱动测试作用:由外部数据集合来驱动测试用例的执行核心的思想:数据和测试代码分离应用场景:一组外部数据来执行相同的操作优点:当测试数据发生大量变化的情况下,测试代码可以保持不变实际项目:excel存储测试数据,ddt读取测试数据到单元......
  • vue配置请求本地接口
    proxy:{'/nrms':{target:'http://localhost:8921/',changeOrigin:true,ws:true,pathRewrite:{'^/nrms':'/'}},'/':{targ......
  • Reactor接口之二
    merge@TestpublicvoidtestMerge(){Flux.merge(Flux.just(1,2,3),Flux.range(5,6)).subscribe(System.out::println);}merge将多个Flux合并成一个Flux。 @TestpublicvoidtestMerge1(){Flux.range(1,5).mergeWith(Flux.just(8,9......
  • 【接口自动化测试】月薪12k必会技术,从0到1学习接口自动化测试,6个操作安排的明明白白
        ​导读:在所有的开发测试中,接口测试是必不可少的一项。有效且覆盖完整的接口测试,不仅能保障新功能的开发质量,还能让开发在修改功能逻辑的时候有回归的能力,同时也是能优雅地进行重构的前提。编写接口测试要遵守哪些原则?测试代码的结构应该是什么样的?接口测试......
  • 聊聊关于,SpringBoot写后端接口
    前言:一个后端接口大致分为四个部分组成:接口地址(url)、接口请求方式(get、post等)、请求数据(request)、响应数据(response)。如何构建这几个部分每个公司要求都不同,没有什么“一定是最好的”标准,但一个优秀的后端接口和一个糟糕的后端接口对比起来差异还是蛮大的,其中最重要的关键点就是......
  • Java获取pdd详情api接口、商品详情、商品描述、宝贝链接获取展示示例
    ​拼多多商品详情就是对拼多多商城中的宝贝的描述了,消费者们在进入到宝贝的详情页面后,可以通过这些描述去了解该款宝贝。其实这样也可以大大的增加商品的转化率。那么它的作用有什么呢?1.突出商品卖点:把商品的特色和突出点写表现出来,很更好的吸引到顾客,让顾客有点击和购买的欲......
  • 与chatGPT谈TyptScript接口问题
    与chatGPT谈TyptScript接口问题问1:能给我说说c#中的inteface与typescript中的inteface的不同与相同吗?答1:C#中的Interface和TypeScript中的Interface有一些相似之处,但也有一些不同之处。相同点:Interface都是用来定义对象的结构和行为的。都支持继承和多态的概念。......
  • 具有前后按钮切换+头图切换联动通用接口(应付不同的联动需要)的图片滑动效果
    -------scroll_tween.js----------CHRD.scroll.tween=function(){varTween={Quart:{easeOut:function(t,b,c,d){return-c*((t=t/d-1)*t*t*t-1)+b;}},Back:{easeOut......
  • pytest之 为什么要做接口自动化
    行情:会接口自动化15-25k工具类实现接口自动化:增加2-3kPostman+newman+git+jenkinsJmeter+Ant+jenkins 一,既然有这些接口测试工具,为什么要做接口自动化?1.敏捷开发,接口一般数量很大,团队需要实现接口测试,多人协作写用例还需要“版本控制”2.功能太死板,有些接口完全无法实现......
  • 使用Node.js调用Sqlite3模块写的大数据查询接口
    使用Node.js调用Sqlite3模块写的大数据查询接口constsqlite3=require('sqlite3');consthttp=require('http');consturl=require('url');constSqliteDb=async(dbFile)=>{constpri={};pri.db=newsqlite3.Database(dbFile);......