java8实现多个列表对象用λ求差集操作

  介绍

java8实现多个列表对象用λ求差集操作?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

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

调用接口获取的数据集合

List列表=response.getData () .getItems ();

本地查询出来的账户集合

ListtowList=accountRepository.findAll ();

筛选差集代码

ListdistinctByUniqueList=list.stream ()

 .filter(项目→! towList.stream ()
  
  . map (e→e.getOwnerId ())
  
  .collect (Collectors.toList ())
  
  .contains (item.getOwnerId ()))
  
  .collect (Collectors.toList ()); 

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

<强> Java8中用λ表达式合并多个相同属性的对象集合

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

那么用λ表达式和HashMao怎么分别处理该种情况呢?本文以学生的姓名、年龄、分数为例,一个集列表合中有多个学生对象,针对姓名和年龄相同属性值的学生对象,对评分值相加并合并为一条,介绍两种不同的处理办法。

1。用lambda表达式:首先,我们新建一个学生类,

 java8实现多个列表对象用λ求差集操作

然后在演示中新建一个列表集合存放学生对象,并用λ表达式进行处理,其中parallelStream是一个并行执行的流。它通过默认的ForkJoinPool,提高你的多线程任务的速度。从结果中我们可以看的到,对姓名和年龄属性值相同的张三,分数值已经相加,并合并为一条新的对象。

 java8实现多个列表对象用λ求差集操作

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

 java8实现多个列表对象用λ求差集操作

思路就是利用HashMap的关键不能相同,去除相同的关键,得到一个新值的价值。运行结果如下,相同姓名和年龄的学生对象中得分相加,并得到一个新的对象。

 java8实现多个列表对象用λ求差集操作

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

关于java8实现多个列表对象用λ求差集操作问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注行业资讯频道了解更多相关知识。

java8实现多个列表对象用λ求差集操作