当前位置:网站首页>使用stream实现两个list集合的合并(对象属性的合并)

使用stream实现两个list集合的合并(对象属性的合并)

2022-08-11 09:37:00 ᅟᅟᅟᅟᅟ

在开发导出报表的时候,搜索了两个list集合,形式如下:

 因为不能同时满足两种情况的搜索,所以只能分开查找数据,再将相同id对应的对象数据合并。

最终展示为下表所示的对象集合。

idnamequestionNumpointNumscore
4799主次干道、商业大街187131121

代码如下: 

//处理数据,集合合并
//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);
    }
    

原网站

版权声明
本文为[ᅟᅟᅟᅟᅟ]所创,转载请带上原文链接,感谢
https://blog.csdn.net/manhengwei/article/details/126270054