使用场景,有两个List<Map<String,Object>>集合,第一个集合的所有元素都是需要保留的。

第一个集合的值为:

{name=张三丰1, id=1}
{name=张三丰2, id=2}
{name=张三丰3, id=3}
{name=张三丰4, id=4}
{name=张三丰5, id=5}
{name=张三丰6, id=6}
{name=张三丰7, id=7}
{name=张三丰8, id=8}

第二个集合的值为:

{grade=61, id=1}
{grade=62, id=2}
{grade=63, id=3}
{grade=64, id=4}

需要根据两个集合中id值相同,就把第二个集合中的grade值赋给第一个集合,如果不匹配,默认grade值为0

结果是这样:

{grade=61, name=张三丰1, id=1}
{grade=62, name=张三丰2, id=2}
{grade=63, name=张三丰3, id=3}
{grade=64, name=张三丰4, id=4}
{grade=0, name=张三丰5, id=5}
{grade=0, name=张三丰6, id=6}
{grade=0, name=张三丰7, id=7}
{grade=0, name=张三丰8, id=8}

具体实现代码:

    @Testpublic void demo01(){List<Map<String,Object>> list = new ArrayList<Map<String,Object>>();for (int i=1;i<9;i++){Map<String,Object> map = new HashMap<>();map.put("id",i);map.put("name","张三丰"+i);list.add(map);}Stream<Map<String, Object>> s1 = list.stream();list.stream().forEach(map-> System.out.println(map));List<Map<String,Object>> list2 = new ArrayList<Map<String,Object>>();for (int i=1;i<5;i++){Map<String,Object> map2 = new HashMap<>();map2.put("id",i);map2.put("grade",i+60);list2.add(map2);}list2.stream().forEach(s-> System.out.println(s));
/***  List<Map<Object, Object>> resultList = oneList.stream().map(map -> twoList.stream()*                 .filter(m -> Objects.equals(m.get("id"), map.get("id")))*                 .findFirst().map(m -> {*                     map.putAll(m);*                     map.put("grade",90);*                     return map;*                 }).orElse(null))*                 .filter(Objects::nonNull).collect(Collectors.toList());*//* List<Map<String, Object>> resultList2 = list.stream().map(m->{m.put("grade",0);for (int i=0;i<list2.size();i++){if(m.get("id").equals(list2.get(i).get("id"))){m.put("grade",list2.get(i).get("grade"));break;}}return m;}).collect(Collectors.toList());*/List<Map<String, Object>> resultList2 = list.stream().map(m->{m.put("grade",0);list2.stream().filter(m2->Objects.equals(m.get("id"), m2.get("id"))).forEach(s-> m.put("grade",s.get("grade")));return m;}).collect(Collectors.toList());resultList2.stream().forEach(s-> System.out.println(s));}

看到最后,喜欢的小伙伴就不要吝啬的帮忙扫码关注一下了,谢谢。

微信扫一扫:关注我个人订阅号“猿小飞”,更多精彩文章在这里及时发布:

使用Java8的Stream对两个 List 遍历匹配数据的优化处理相关推荐

  1. java8两个list中发数据比较_Java8 Stream对两个 List 遍历匹配数据的优化处理操作

    使用场景,有两个List>集合,第一个集合的所有元素都是需要保留的. 第一个集合的值为: {name=张三丰1, id=1} {name=张三丰2, id=2} {name=张三丰3, id=3 ...

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

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

  3. Java8使用stream操作两个list根据某字段匹配再对其中一个list进行赋值

    import com.google.common.collect.Lists; import lombok.extern.slf4j.Slf4j; import java.lang.reflect.F ...

  4. JAVA8之Stream过滤 - 两个List<T>取变量值相同的数据

    直接上代码,觉得有用的大佬点个赞. package com.jackrain.nea.oc.oms.services;import lombok.Builder; import lombok.Data ...

  5. c++两个文档匹配数据_《搜索和推荐中的深度匹配》——1.2 搜索和推荐中匹配统一性...

    Garcia-Molina等[1]指出,搜索和推荐中的根本问题是识别满足用户信息需求的信息对象.还表明搜索(信息检索)和推荐(信息过滤)是同一枚硬币的两个方面,具有很强的联系和相似性[2].图1.1 ...

  6. Java8 Stream:两万字博文教你玩转集合的筛选、归约、分组、聚合

    目录 一.Stream概述 二.Stream 的创建 三.Stream 的中间操作 3.1.筛选(filter/distinct) 3.2.切片(limit/skip) 3.3.映射(map/mapT ...

  7. java8中stream流解决两个list合并问题

    当我们遇到需要将两个list合并成一个list实体的时候,可以使用java8的stream流来解决,以下是我的一个小demo,可供大家参考学习. public ResultDto listBalanc ...

  8. Java8采用stream、parallelStream迭代的区别

    Java8采用stream.parallelStream迭代的区别 我们都知道在Java 8 API添加了一个新的抽象称为流Stream,可以让你以一种声明的方式处理数据.Stream 使用一种类似用 ...

  9. 玩转Java8的 Stream 之函数式接口

    作者:litesky www.jianshu.com/p/2338cabc59e1 函数式接口是伴随着Stream的诞生而出现的,Java8Stream 作为函数式编程的一种具体实现,开发者无需关注怎 ...

最新文章

  1. 学习string,stringBuffer时遇到的问题
  2. 稀缺:百分之二的选择
  3. flash跨域访问解决办法
  4. 了解下C#由转换二进制所引起的思考
  5. 前端学习(3098):vue+element今日头条管理-关于富文本编辑器
  6. bzoj1046(HAOI2007)上升序列
  7. 一文了解linux内核,一文了解Linux的系统结构
  8. 【前端】—每日5道面试题打卡(十六)
  9. WebService接口开发
  10. 阿昌教你Linux密码忘记后如何重置
  11. 华为OSPF配置模拟实例
  12. linux下海康威视MVS以及库的安装
  13. HTTP状态码滑稽表情包
  14. 软磁材料种类、特点和应用范围
  15. 如何解决Css属性text-overflow:ellipsis 不起作用(文本溢出显示省略号)
  16. 手游联运系统隐藏福利大揭秘
  17. 安卓开发中获取服务器网络延迟(ping)
  18. 摩尔定律到摩尔第二定律
  19. 小福利,用selenium模块爬取qq音乐歌单
  20. 【点云分割】边界分割对点云分割的监督学习(CBL)

热门文章

  1. 如何看待第三代神经网络SNN?详解脉冲神经网络的架构原理、数据集和训练方法 原创
  2. 从强提醒说起——社交场景下的万有“隐力”
  3. HTTP协议(5)HTTP请求和响应
  4. 根据mysql数据库日志恢复删除数据
  5. 微服务软件架构的认识和设计模式
  6. 获取进程号并赋值判断进程状态
  7. 使用python向Redis批量导入数据
  8. android10分区镜像,分区和映像  |  Android 开源项目  |  Android Open Source Project
  9. 二 Java开发环境搭建
  10. reactjs组件通信方式总结