当前位置:网站首页>使用stream实现两个list集合的合并(对象属性的合并)
使用stream实现两个list集合的合并(对象属性的合并)
2022-08-11 09:37:00 【ᅟᅟᅟᅟᅟ】
在开发导出报表的时候,搜索了两个list集合,形式如下:
因为不能同时满足两种情况的搜索,所以只能分开查找数据,再将相同id对应的对象数据合并。
最终展示为下表所示的对象集合。
id | name | questionNum | pointNum | score |
4799 | 主次干道、商业大街 | 187 | 13 | 1121 |
代码如下:
//处理数据,集合合并
//list1,list2为搜索出的两个集合
resultList = list1.stream().map(m -> {
list2.stream().filter(m2-> Objects.equals(m.getTypeId(),m2.getTypeId())).forEach(m2-> {
m.setNum(m2.getNum());
m.setScores(m2.getScores());
});
return m;
}).collect(Collectors.toList());
stream循环匹配合并list,根据共同字段合并集合
public static void main(String[] args) {
List<MemberInformationDomain> memberInformationDomainList = Lists.newArrayList();
//会员卡信息数据
List<MemberInfoNumDomain> memberInfoNumDomainList = Lists.newArrayList();
MemberInformationDomain informationDomain = new MemberInformationDomain();
informationDomain.setMemberId(1L);
informationDomain.setNickname("罗");
MemberInformationDomain informationDomain1 = new MemberInformationDomain();
informationDomain1.setMemberId(2L);
informationDomain1.setNickname("罗");
memberInformationDomainList.add(informationDomain);
memberInformationDomainList.add(informationDomain1);
MemberInfoNumDomain numDomain = new MemberInfoNumDomain();
numDomain.setMemberId(1L);
numDomain.setAccountMergeNum(2);
numDomain.setEntityCardNum(2);
numDomain.setHoldCardNum(4);
numDomain.setVirtualCardNum(6);
numDomain.setJointlyCardNum(1);
memberInfoNumDomainList.add(numDomain);
memberInformationDomainList.stream().forEach(infoList -> {
memberInfoNumDomainList.stream().forEach(numList -> {
if (infoList.getMemberId().equals(numList.getMemberId())) {
infoList.setAccountMergeNum(numList.getAccountMergeNum());
infoList.setHoldCardNum(numList.getHoldCardNum());
infoList.setEntityCardNum(numList.getEntityCardNum());
infoList.setJointlyCardNum(numList.getJointlyCardNum());
infoList.setVirtualCardNum(numList.getVirtualCardNum());
}
});
});
System.out.println("得到的集合对象为:" + memberInformationDomainList);
}
边栏推荐
- 基于卷积的神经网络系统,卷积神经网络毕业论文
- Song of the Cactus - Massive Rapid Expansion (1)
- Primavera Unifier 高级公式使用分享
- 1.3版本自定义TrainOneStepCell报错
- 音视频+AI,中关村科金助力某银行探索发展新路径 | 案例研究
- Inventorying Four Entry-Level SSL Certificates
- 数字钱包红海角逐,小程序生态快速引入可助力占领智慧设备入口
- wordpress插件开发03-简单的all in one seo 插件开发
- 深度学习100例 —— 卷积神经网络(CNN)识别验证码
- mysql中查询多个表中的数据量
猜你喜欢
IPQ4019/IPQ4029 support WiFi6 MiniPCIe Module 2T2R 2×2.4GHz 2x5GHz MT7915 MT7975
HDRP shader to get shadows (Custom Pass)
MySQL性能调优,必须掌握这一个工具!!!(1分钟系列)
零基础创作专业wordpress网站12-设置标签栏图标(favicon)
深度神经网络与人脑神经网络哪些区域有一定联系?
canvas图形操作(缩放、旋转、位移)
OAK-FFC Series Product Getting Started Guide
Typora和基本的Markdown语法
数字钱包红海角逐,小程序生态快速引入可助力占领智慧设备入口
pycharm cancel msyql expression highlighting
随机推荐
音视频+AI,中关村科金助力某银行探索发展新路径 | 案例研究
【无标题】超时超时超时超时超时
持续集成/持续部署(2)Jenkins & SonarQube
如何在移动钱包中搭建一个小程序应用商店
halcon实例
Network Models (DeepLab, DeepLabv3)
深度神经网络与人脑神经网络哪些区域有一定联系?
SQL语句
在软件工程领域,搞科研的这十年!
Detailed Explanation of the Level 5 Test Center of the Chinese Institute of Electronics (1)-string type string
STM32之串口传输结构体
软件定制开发——企业定制开发app软件的优势
pycharm 取消msyql表达式高亮
网络流行简笔画图片大全,关于网络的简笔画图片
数据库 SQL 优化大总结之:百万级数据库优化方案
保证金监控中心保证期货开户和交易记录
snapshot standby switch
Typora和基本的Markdown语法
canvas图片操作
Primavera Unifier 高级公式使用分享