前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >反应式编程之flux concatmap

反应式编程之flux concatmap

作者头像
johnhuster的分享
发布2022-03-28 20:17:54
5190
发布2022-03-28 20:17:54
举报
文章被收录于专栏:johnhuster

本文基于project reactor,,reactor-bom版本为Dysprosium-SR4,flux concatMap方法作用是将多个publisher组合起来,然后依次消费,消费的顺序跟传入的顺序相同,消费完一个publisher后才开始消费下一个publisher,下面看个例子

代码语言:javascript
复制
	@Test
	public void concatmap(){
		Student st1 = new Student("张三",90);
		Student st2 = new Student("李四",91);
		Student st3 = new Student("王二",87);
		Student st4 = new Student("李逵",97);
		Student st5 = new Student("宋江",85);
		List<Student> list1 = new ArrayList<>();
		list1.add(st1);
		list1.add(st2);
		list1.add(st5);
		List<Student> list2 = new ArrayList<>();
		list2.add(st3);
		list2.add(st4);
		Teacher t1 = new Teacher();
		t1.setStudents(list1);
		Teacher t2 = new Teacher();
		t2.setStudents(list2);
		List<Teacher> teachers = new ArrayList<>();
		teachers.add(t1);
		teachers.add(t2);
		Flux.fromIterable(teachers).concatMap(t->Flux.fromIterable(t.getStudents()))
		.sort((s1,s2)->s1.getScore()-s2.getScore())
		.subscribe(System.out::println);
	}

上面例子的作用是排序甲乙两名老师下面学生成绩,输出结果如下所示:

名字:宋江 成绩:85 名字:王二 成绩:87 名字:张三 成绩:90 名字:李四 成绩:91 名字:李逵 成绩:97

可以看出上面是按照升序排列的,如果想降序排列,只需修改sort方法里传入的Comparator lambda表达式即可,从concatMap字面上可以看出这是concat跟map两个单词的拼写,在实际功能上也确实如此,concatMap将传入的数据进行了转换,转换后的数据流拼接起来作为一个新的publisher。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/02/06 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档