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流分組並重構該數據

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM