zoukankan      html  css  js  c++  java
  • 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流分组并重构该数据

  • 相关阅读:
    剑指offer-矩形覆盖
    剑指offer-变态跳台阶
    剑指offer-跳台阶
    剑指offer-斐波那契数列
    剑指offer-旋转数组的最小数字
    剑指offer-用俩个栈实现队列
    剑指offer-重建二叉树
    剑指offer-从尾到头打印链表
    http头
    mysql-8.0解压缩版安装配置完整过程
  • 原文地址:https://www.cnblogs.com/XueTing/p/15123792.html
Copyright © 2011-2022 走看看