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

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

调用接口获取的数据集合

list list = response.getdata().getitems();

本地查询出来的账户集合

list towlist = accountrepository.findall();

筛选差集代码

list 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类,

c8c899189c3a8a41e611b2c99d777d14.png

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

badd8d061834ffa3ccbc19d49d80b862.png

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

9108ecaf935d876085a9641e14779f0a.png

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

ef7301ce3095e219c88532c2e4b8be1b.png

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

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

希望与广大网友互动??

点此进行留言吧!

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值