java合并两个集合并通过stream流构建响应结果

集合:List<Map>

 

1.模板集合

public static List<Map<String,Object>> of(){
        String json = "[" +
                "{\"name\":\"更换配件\",\"value\":\"0\"}," +
                "{\"name\":\"其他维修\",\"value\":\"0\"}," +
                "{\"name\":\"返厂维修\",\"value\":\"0\"}"  +
                "]";
        List<Map<String, Object>> list = (List<Map<String, Object>>) JSONArray.parse(json);
        return list;
    }

 

2.构建

     //1.从数据库中获取数据(db)
        List<Map<String, Object>> list = this.machinelifeHardwareLogsService.maintenanceTypeStatistics(vo);

        //2.构造图表所需字段,合并集合(模板)
        List<Map<String, Object>> mapList = of();
        mapList.addAll(list);

        //3.构造响应数据
        List<Map<String, Object>> data = mapList.stream()
                .collect(Collectors.groupingBy(group -> group.get("name")))
                .entrySet()
                .stream()
                .map(m -> m.getValue().stream()
                        .flatMap(o -> o.entrySet().stream())
                        .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (m1, m2) -> m2)))
                .collect(toList());

 

3.应用场景:图表、集合合并分组构建数据等场景,主要流程为:

3-1.观察数据库查出来的数据是什么格式 ,然后格式定义和初始化好数据结构模板

3-2.将db数据合并到模板数据中

3-3.通过stream流分组并重构该数据

 

posted @ 2021-08-10 14:51  xueheng_blog  阅读(814)  评论(0编辑  收藏  举报