List數據轉Map數據並進行分組排序


  利用JAVA 8的特性實現List數據轉Map數據並進行分組排序。

1、准備數據

        List<Map<String, Object>> list = new ArrayList<>();
        Map<String, Object> m1 = new HashMap<>();
        m1.put("a", 1);
        m1.put("c", 3);
        Map<String, Object> m2 = new HashMap<>();
        m2.put("a", 11);
        m2.put("b", 2);
        Map<String, Object> m3 = new HashMap<>();
        m3.put("a", 111);
        m3.put("c", 1);
        Map<String, Object> m4 = new HashMap<>();
        m4.put("b", 22);
        Map<String, Object> m5 = new HashMap<>();
        m5.put("a", 1111);
        m5.put("b", 222);
        list.add(m1);
        list.add(m2);
        list.add(m3);
        list.add(m4);
        list.add(m5);
        System.out.println("未分組排序數據:" + list);
        System.out.println("已分組排序數據:" + transition(list));

2、編寫分組排序方法

    public static Map<String, List<Map<String, Object>>> transition(List<Map<String, Object>> list){
        Map<String, List<Map<String, Object>>> map = new HashMap<>();
        // 分組
        for(Map<String, Object> temp : list) {
            // 獲取Map的每一對值
            Iterator<Map.Entry<String, Object>> iterator = temp.entrySet().iterator();
            while (iterator.hasNext()) {
                List<Map<String, Object>> listAndMap = new ArrayList<>();
                // 獲取到每一個實體
                Map.Entry<String, Object> entity = iterator.next();
                if (map.containsKey(entity.getKey())) {
                    // 獲取原來存在的數據
                    List<Map<String, Object>> lm = map.get(entity.getKey());
                    lm.add(new HashMap<String, Object>() {{
                        put(entity.getKey(), entity.getValue());
                    }});
                    Collections.sort(lm, (param1, param2) ->
                            (param2.get(entity.getKey()).toString().compareTo(param1.get(entity.getKey()).toString()))
                    );
                    map.replace(entity.getKey(), lm);
                } else {
                    listAndMap.add(new HashMap<String, Object>() {{
                        put(entity.getKey(), entity.getValue());
                    }});
                    map.put(entity.getKey(), listAndMap);
                }
            }
        }
        return map;
    }

3、測試

        System.out.println("未分組排序數據:" + list);
        System.out.println("已分組排序數據:" + transition(list));

4、輸出結果

未排序數據:[{a=1, c=3}, {a=11, b=2}, {a=111, c=1}, {b=22}, {a=1111, b=222}]
已排序數據:{a=[{a=1111}, {a=111}, {a=11}, {a=1}], b=[{b=222}, {b=22}, {b=2}], c=[{c=3}, {c=1}]}

* 本人小白,希望可以幫助到跟我一樣的小白,希望大神多多指導。


免責聲明!

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



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