为什么要用Lambda表达式和Stream流做集合的处理? 因为效率高、代码简洁、高端大气上档次啊!


ES6


1、将一个集合中每一个对象的某个元素取出来作为一个新的集合var newList = oldList.map(item => item.element)2、将数组已指定的字符串分割后,拼接成一个字符串var str = arr.join(",")

Java


现在有以下一个场景:需要将集合
 A:{"id": "12345","name": "zhangsan"}B:{"id": "12345", "age": 23}合并成一个新的集合C:{"id": "12345","name": "zhangsan", "age": 23}
 1、将listA集合转换为mapMap<String, Person> map = listA.stream().collect(Collectors.toMap(Person ::getId, Person -> Person))2、合并数据,这里将listA集合的数据合并到listB集合上listB.forEach(n -> {if(map.containsKey(n.getId())){Person person = map.get(n.getId());n.setName(person.getName());}});

这里经过第二步处理好的listB就已经是我们想要的listA啦!

 3、如果主键重复了,还可以使用以下方式去重Map<String, Person> person = listB.stream().collect(Collectors.toMap(Person::getId, Function.identity(), (key1, key2) -> key2));

==============================================================================

其余干货

 1、一个集合根据主键msisdn去重,得到一个新的集合List<Card> newList = list.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(() ->new TreeSet<>(Comparator.comparing(Card::getMsisdn))), ArrayList::new));
 2、获取一个集合中,某个对象指定属性的集合List<Long> msisdnList = kqCardList.stream().map(KqCard::getMsisdn).collect(Collectors.toList());
     3、将一个long类型的集合转换为String类型的集合List<String> msisdnStrList = msisdnList.stream().map(String::valueOf).collect(Collectors.toList());
 4、遍历一个集合中,对每个对象的指定属性进行赋值(这里我对每个对象赋值了三个参数,最后一个是使用UUID做主键)List<CmiDataAmount> cmiDataAmountList = cmiDataAmountList.stream().map(cmiDataAmount ->{cmiDataAmount.setCreateTime(createTime);cmiDataAmount.setCurrentMonth(currentMonth);cmiDataAmount.setId(UUID.randomUUID().toString());}).collect(Collectors.toList());
 5、将String类型的字符串(比如用“,”分割)转换为集合List<String> msisdnsList = Arrays.asList(msisdns.split(",")).stream().map(s -> String.format(s.trim())).collect(Collectors.toList());
 6、遍历集合,获取类型为A的元素,并放入新集合List<CmiDataAmount> list = cmiDataAmountList.stream().filter(item -> item.getType().equals("A")).collect(Collectors.toList());
 7、取list集合中的两个元素,转换为一个mapMap<Integer, String> collect = list.stream().collect(Collectors.toMap(Student::getAge, Student::getName));
 8、如何将一个元素(对象、属性等)优雅的转换为一个集合List<K> authcChannels = Stream.of(K).collect(Collectors.toList());
 9、获取list中name=bbb的对象People bbb = list.stream().filter(item -> item.getName().equals("bbb")).findFirst().get();
 10、stream根据list中某字段进行排序(正序)List<Integer> newList = list.stream().sorted().collect(Collectors.toList());
 11、stream根据list中某字段进行排序(倒序)List<Integer> newList = list.stream().sorted(Comparator.reverseOrder()).collect(Collectors.toList());

分享完毕!拜拜!

Java8两个list集合合并成一个list集合相关推荐

  1. java jdk8 使用stream实现两个list集合合并成一个list集合(对象属性的合并)

    java使用stream实现list中对象属性的合并: 根据两个List中的某个相同字段合并成一条List,包含两个List中的字段 目录 一.前言 二.示例 示例1:java8 合并两个 list& ...

  2. java8 使用stream实现两个list集合合并成一个list集合及List切成多个list

    文章目录 java8 合并两个 list<map> java8 合并两个 list<T> 一个list 集合合并去重求和 拆分大list java8 合并两个 list< ...

  3. PDF合并:如何将两个PDF文件合并成一个PDF文件

    PDF文件是我们在工作中经常能够用到的文件,尤其是在办公中会遇到很多PDF文件在传输的过程中为了传输更快被拆分成了几个PDF文件,但是要找一个完整的PDF文件就需要把两个被拆分的PDF文件合并成一个P ...

  4. 将两个HEX文件合并成一个HEX文件

    将两个HEX文件合并成一个HEX文件 文章目录 将两个HEX文件合并成一个HEX文件 系统环境 1. 生成BootLoader和app的HEX文件 2. 将两个HEX文件合并成一个HEX 3. 利用J ...

  5. Java将查询到的List,list集合还嵌套一个list集合(把这个list集合和嵌套的list集合合并为一个list集合)

    Java将查询到的List,list集合还嵌套一个list集合(把这个list集合和嵌套的list集合合并为一个list集合) 代码 前提 查询到的 patientInfos list集合里面包含其他 ...

  6. java字节流——把两个视频文件合并成一个,输出为一个新文件

    下面把D盘的两个视频文件合并为一个,并输出为D:\new.mp4 package com.oracle.core;import java.io.File; import java.io.FileInp ...

  7. iOS两个.a文件合并成一个.a文件

    在移动开发过程中,如果一个工程需要接入很多第三方sdk ,那么一个工程可能有好多个.a库.这么多个.a文件,能不能合成一个库,而又能同时实现多个功能呢? 这里,就用支付宝sdk和微信sdk用作试验.支 ...

  8. 两个List数据集合合并成一个List

    查询两个差不多相同的表,一个是入库表,一个是退货表,字段大致相同,但是有所差异,入库表的数量和所有金额都是正数,退货表的数量和金额都是负数,所以不能join链表查询,需要分开查询出两个ToList:但 ...

  9. pdf合到一起java_如何将两个PDF文件合并成一个Java?

    我想使用 PDFBox合并许多PDF文件到一个这是我做了: PDDocument document = new PDDocument(); for (String pdfFile: pdfFiles) ...

最新文章

  1. C语言单链表读入文件表妹,电面|LOFTER(乐乎) - 让兴趣,更有趣
  2. pyharm虚拟环境_手把手教你如何在Pycharm中加载和使用虚拟环境
  3. mvc中ajax的跳转,springmvc ajax 跳转的学习笔记
  4. 08.15《CEP职业发展规划课》
  5. Teams Bot如何判断用户所在的时区
  6. [JavaWeb-HTML]HTML标签_语义化标签
  7. Flink1.12.0使用过程中遇到的异常
  8. Gson实现自定义解析json格式
  9. php转go注意,PHP转Golang一些感想
  10. 漫画:一文学会面试中常问的 IO 问题!
  11. Delphi第三方控件安装卸载指南
  12. 【STM32】 ESP8266WIFI模块
  13. 使用树莓派4B最新官方烧录软件烧录镜像设置密码,直接登录wifi
  14. 【linux技术】记一次虚拟机vmware里 Centos7开机故障:sd 0:0:0:0: [sda] Assuming drive cache: write through
  15. 计算机中心英语怎么说,计算机中心,computer center,音标,读音,翻译,英文例句,英语词典...
  16. UVa 10041 - Vito's Family
  17. python 等值线_绘图系列(1):利用matplotlib绘制等值线图
  18. 字符串是否为空(isEmpty和isBlank的区别)
  19. 数据处理小工具:Excel 批量数据文件拆分/整合器...
  20. 每任务-苹果应用市场隐私政策

热门文章

  1. 【剑指offter】二维数组中的查找
  2. 我国关键信息基础设施安全保护白皮书
  3. 隆重推荐:大明王朝1566
  4. 何洋开讲丨“云”将如何在中国制造2025中起到颠覆作用?
  5. 如何简单有效的删除win10英语美式键盘
  6. 实例:用C#.NET手把手教你做微信公众号开发(7)--普通消息处理之位置消息
  7. 查看电脑自带的Office版本信息重新安装Office
  8. sql语句转换成linq
  9. CSS——css外部样式文件的引入
  10. android 克隆攻击原理,通过CTF学习Android漏洞(炸弹引爆+dex修复)2015 RCTF / 攻防世界高手区 where...