java8 多个list对象用lambda求差集操作

 更新时间:2020年09月25日 14:37:51   作者:clmm123  
这篇文章主要介绍了java8 多个list对象用lambda求差集操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

业务场景:调用同步接口获取当前全部有效账户,数据库已存在部分账户信息,因此需要筛选同步接口中已存在本地的帐户。

调用接口获取的数据集合

List<AccountVo> list = response.getData().getItems();

本地查询出来的账户集合

List<Account> towList = accountRepository.findAll();

筛选差集代码

List<AccountVo> distinctByUniqueList = list.stream()

 .filter(item -> !towList.stream()

 .map(e -> e.getOwnerId())

 .collect(Collectors.toList())

 .contains(item.getOwnerId()))

 .collect(Collectors.toList());

就这样获取到需要处理的数据。

补充知识:Java8中用Lambda表达式合并多个相同属性的对象集合

在实际的业务处理中,我们经常会碰到需要合并同一个集合内相同属性对象的情况,比如,同一个用户短时间内下的订单,我们需要将各个订单的金额合并成一个总金额。

那么用lambda表达式和HashMao怎么分别处理该种情况呢?本文以Student的name,age,score为例,一个List集合中有多个Student对象,针对name和age相同属性值的Student对象,对score值相加并合并为一条,介绍两种不同的处理办法。

1.用lambda表达式:首先,我们新建一个Student类,

然后在Demo中新建一个List集合存放Student对象,并用lambda表达式进行处理,其中parallelStream是一个并行执行的流.它通过默认的ForkJoinPool,提高你的多线程任务的速度。从结果中我们可以看到,对name和age属性值相同的张三,score值已经相加,并合并为一条新的对象。

2.HashMap合并集合:为了更直观的展示,我们重新new了一个新的类,并重写了hashCode和equal方法。

思路就是利用HashMap的key不能相同,去除相同的key,得到一个新的value值。运行结果如下,相同name和age的student对象中score相加,并得到一个新的对象。

通过比较不难看出,lambda表达式代码量更少,更易阅读,有兴趣的可以继续研究研究java8的一些其他特性。

以上这篇java8 多个list对象用lambda求差集操作就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Java 多线程实例详解(三)

    Java 多线程实例详解(三)

    本文主要介绍 java 线程安全的知识,这里整理了相关资料及实现示例代码,有兴趣的小伙伴可以参考下
    2016-09-09
  • 老程序员教你一天时间完成Java迷宫小游戏

    老程序员教你一天时间完成Java迷宫小游戏

    最近经常在机房看同学在玩一个走迷宫的游戏,比较有趣,自己也用java写一个实现随机生成迷宫的算法,其实就是一个图的深度优先遍历算法.
    2021-08-08
  • 普通对象使用spring容器中的对象的实现方法

    普通对象使用spring容器中的对象的实现方法

    这篇文章主要介绍了普通对象使用spring容器中的对象的实现方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-06-06
  • jedis的testWhileIdle用法源码解读

    jedis的testWhileIdle用法源码解读

    这篇文章主要为大家介绍了jedis的testWhileIdle用法源码解读,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-09-09
  • java springmvc实现验证码功能

    java springmvc实现验证码功能

    这篇文章主要为大家详细介绍了java springmvc实现验证码功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-11-11
  • spring+apollo动态获取yaml格式的配置方式

    spring+apollo动态获取yaml格式的配置方式

    这篇文章主要介绍了spring+apollo动态获取yaml格式的配置方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-04-04
  • 浅谈使用Java Web获取客户端真实IP的方法示例详解

    浅谈使用Java Web获取客户端真实IP的方法示例详解

    这篇文章主要介绍了使用Java-Web获取客户端真实IP的方法示例详解。一般我们无法获取客户端真实IP,原因是:当我们通过request获取客户端IP时,自身服务器通常会为了保护信息或者负载均衡的目的,对自身服务器做反向代理。对此感兴趣可以了解一下
    2020-07-07
  • 解决Feign调用的GET参数传递的问题

    解决Feign调用的GET参数传递的问题

    这篇文章主要介绍了解决Feign调用的GET参数传递的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-03-03
  • Java中length,length(),size()详解及区别

    Java中length,length(),size()详解及区别

    这篇文章主要介绍了Java中length,length(),size()详解及区别的相关资料,需要的朋友可以参考下
    2016-11-11
  • 详解Java中Stream流的用法和原理

    详解Java中Stream流的用法和原理

    最近编码的时候用到了Stream这个东西,以前也用过,但是对它没有一个系统的认知,在好奇心的驱动下还是决定花一些时间去系统地学一学,不了解Stream的同学可以看看本文,对大家的学习和工作有一定的帮助
    2023-10-10

最新评论