当前位置:网站首页>使用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);
}
边栏推荐
猜你喜欢
三次握手与四次挥手
Simple interaction between server and client
疫情当前,如何提高远程办公的效率,远程办公工具分享
HDRP Custom Pass Shader 获取世界坐标和近裁剪平面坐标
神经痛分类图片大全,神经病理性疼痛分类
The no-code platform helps Zhongshan Hospital build an "intelligent management system" to realize smart medical care
Oacle数据库使用问题
神经网络图怎么分析,画神经网络结构图
nodejs worker_threads的事件监听问题
验证拦截器的执行流程
随机推荐
零基础创作专业wordpress网站12-设置标签栏图标(favicon)
canvas图像阴影处理
深度神经网络与人脑神经网络哪些区域有一定联系?
Oacle数据库使用问题
SQL statement
Simple interaction between server and client
Typora and basic Markdown syntax
收集awr
数据库事务
在软件工程领域,搞科研的这十年!
Software custom development - the advantages of enterprise custom development of app software
关于ts中的指针问题call,bind, apply
database transaction
企业展厅制作要具备的六大功能
mindspore 执行模型转换为310的mindir文件显示无LRN算子
MySQL性能调优,必须掌握这一个工具!!!(1分钟系列)
VideoScribe卡死解决方案
海信自助机-HV530刷机教程
深度学习100例 —— 卷积神经网络(CNN)识别验证码
Three handshakes and four waves