哈人家玉 2023-02-03 15:45 采纳率: 66.7%
浏览 201
已结题

java 8 怎么把三个list分组然后合并到一个list里面?

list1

{"hjje":"520.00","dan_no":"YSQ2022102"},{"hjje":"351.02","dan_no":"YSQ202206"}

list2

{"shum":"JAVA","dan_no":"YSQ202206"},{"shum":"C++","dan_no":"YSQ2022102"},{"shum":"PHP","dan_no":"YSQ202206"}

list3

{"nj":"三年级二班","dan_no":"YSQ202206"},{"nj":"二年级一班","dan_no":"YSQ2022102"},{"nj":"三年级四班","dan_no":"YSQ202206"},

java8 怎么把上面3个List根据dan_no分组,然后合并到一个List里面?
最终结果:


{"dan_no":"YSQ2022102","shum":"C++","nj":"二年级一班","hjje":"520.00"},{"dan_no":"YSQ202206","shum":"JAVA,PHP","nj":"三年级四班,三年级二班","hjje":"351.02"}

初学,请教。

  • 写回答

3条回答 默认 最新

  • 关注
    
    public static void main(String[] args) {
            List<Map<String,String>> list1 = new ArrayList<>();
            Map<String,String> map11 = new HashMap();
            map11.put("hjje", "520.00");
            map11.put("dan_no", "YSQ2022102");
    
            Map<String,String> map12 = new HashMap();
            map12.put("hjje", "351.02");
            map12.put("dan_no", "YSQ202206");
            list1.add(map11);
            list1.add(map12);
    
            List<Map<String,String>> list2 = new ArrayList<>();
            Map<String,String> map21 = new HashMap();
            map21.put("shum", "JAVA");
            map21.put("dan_no", "YSQ202206");
    
            Map<String,String> map22 = new HashMap();
            map22.put("shum", "C++");
            map22.put("dan_no", "YSQ2022102");
    
            Map<String,String> map23 = new HashMap();
            map23.put("shum", "PHP");
            map23.put("dan_no", "YSQ202206");
            list2.add(map21);
            list2.add(map22);
            list2.add(map23);
    
            List<Map<String,String>> list3 = new ArrayList<>();
            Map<String,String> map31 = new HashMap();
            map31.put("nj", "三年级二班");
            map31.put("dan_no", "YSQ202206");
    
            Map<String,String> map32 = new HashMap();
            map32.put("nj", "二年级一班");
            map32.put("dan_no", "YSQ2022102");
    
            Map<String,String> map33 = new HashMap();
            map33.put("nj", "三年级四班");
            map33.put("dan_no", "YSQ202206");
    
            list3.add(map31);
            list3.add(map32);
            list3.add(map33);
            List<Map<String, String>> collect2 = list1.stream().map(m1 -> {
                List<String> collect = list2.stream().filter(f -> m1.get("dan_no").equals(f.get("dan_no"))).map(fe -> {
                    String shum = fe.get("shum").toString();
                    return shum;
                }).collect(Collectors.toList());
                String join = String.join(",", collect);
                m1.put("shum", join);
    
                List<String> collect1 = list3.stream().filter(f -> m1.get("dan_no").equals(f.get("dan_no"))).map(fe -> {
                    String shum = fe.get("nj").toString();
                    return shum;
                }).collect(Collectors.toList());
                String nj = String.join(",", collect1);
                m1.put("nj", nj);
                return m1;
            }).collect(Collectors.toList());
            System.out.println(collect2);
        }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 2月17日
  • 已采纳回答 2月9日
  • 创建了问题 2月3日

悬赏问题

  • ¥30 eclipse开启服务后,网页无法打开
  • ¥30 雷达辐射源信号参考模型
  • ¥15 html+css+js如何实现这样子的效果?
  • ¥15 STM32单片机自主设计
  • ¥15 如何在node.js中或者java中给wav格式的音频编码成sil格式呢
  • ¥15 不小心不正规的开发公司导致不给我们y码,
  • ¥15 我的代码无法在vc++中运行呀,错误很多
  • ¥50 求一个win系统下运行的可自动抓取arm64架构deb安装包和其依赖包的软件。
  • ¥60 fail to initialize keyboard hotkeys through kernel.0000000000
  • ¥30 ppOCRLabel导出识别结果失败