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


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

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

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

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

    代码如下: 

    1. //处理数据,集合合并
    2. //list1,list2为搜索出的两个集合
    3. resultList = list1.stream().map(m -> {
    4. list2.stream().filter(m2-> Objects.equals(m.getTypeId(),m2.getTypeId())).forEach(m2-> {
    5. m.setNum(m2.getNum());
    6. m.setScores(m2.getScores());
    7. });
    8. return m;
    9. }).collect(Collectors.toList());

    stream循环匹配合并list,根据共同字段合并集合

    1. public static void main(String[] args) {
    2. List memberInformationDomainList = Lists.newArrayList();
    3. //会员卡信息数据
    4. List memberInfoNumDomainList = Lists.newArrayList();
    5. MemberInformationDomain informationDomain = new MemberInformationDomain();
    6. informationDomain.setMemberId(1L);
    7. informationDomain.setNickname("罗");
    8. MemberInformationDomain informationDomain1 = new MemberInformationDomain();
    9. informationDomain1.setMemberId(2L);
    10. informationDomain1.setNickname("罗");
    11. memberInformationDomainList.add(informationDomain);
    12. memberInformationDomainList.add(informationDomain1);
    13. MemberInfoNumDomain numDomain = new MemberInfoNumDomain();
    14. numDomain.setMemberId(1L);
    15. numDomain.setAccountMergeNum(2);
    16. numDomain.setEntityCardNum(2);
    17. numDomain.setHoldCardNum(4);
    18. numDomain.setVirtualCardNum(6);
    19. numDomain.setJointlyCardNum(1);
    20. memberInfoNumDomainList.add(numDomain);
    21. memberInformationDomainList.stream().forEach(infoList -> {
    22. memberInfoNumDomainList.stream().forEach(numList -> {
    23. if (infoList.getMemberId().equals(numList.getMemberId())) {
    24. infoList.setAccountMergeNum(numList.getAccountMergeNum());
    25. infoList.setHoldCardNum(numList.getHoldCardNum());
    26. infoList.setEntityCardNum(numList.getEntityCardNum());
    27. infoList.setJointlyCardNum(numList.getJointlyCardNum());
    28. infoList.setVirtualCardNum(numList.getVirtualCardNum());
    29. }
    30. });
    31. });
    32. System.out.println("得到的集合对象为:" + memberInformationDomainList);
    33. }

  • 相关阅读:
    C++之单字符串匹配问题
    林沛满--快递员的工作策略——TCP窗口
    集团公司管控的三种模式:财务管控、运营管控、战略管
    第五十二天 数论
    RabbitMQ-java使用消息队列
    gcc中-I(大写的i)参数的作用
    Zookeeper部署运行_伪集群安装
    多亏这个面试,95后跳槽阿里网友晒工资条
    【LeetCode】191. 位1的个数
    SourceTree 4.1.5(Git客户端)
  • 原文地址:https://blog.csdn.net/manhengwei/article/details/126270054