1. 程式人生 > 其它 >在list<map>中,根據map某幾個key值相等的累加

在list<map>中,根據map某幾個key值相等的累加

將list<map>中的資料按map中的某幾個key值合計

 

    public static void main(String[] args) {
        List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
        Map<String, Object> map1 = new HashMap<String, Object>();
        map1.put("month", "1");
        map1.put(
"統計維度", "延期未發貨"); map1.put("發貨額", 1289); list.add(map1); Map<String, Object> map2 = new HashMap<String, Object>(); map2.put("month", "1"); map2.put("統計維度", "延期未發貨"); map2.put("發貨額", 1289); list.add(map2); Map<String, Object> map3 = new
HashMap<String, Object>(); map3.put("month", "1"); map3.put("統計維度", " 當月新增未發貨"); map3.put("發貨額", 1289); list.add(map3); Map<String, Object> map4 = new HashMap<String, Object>(); map4.put("month", "2"); map4.put("統計維度", " 當月新增未發貨"); map4.put(
"發貨額", 1289); list.add(map4); Map<String, Object> map5 = new HashMap<String, Object>(); map5.put("month", "2"); map5.put("統計維度", " 當月新增未發貨"); map5.put("發貨額", 1289); list.add(map5); Map<String, Object> map6 = new HashMap<String, Object>(); map6.put("month", "2"); map6.put("統計維度", "延期未發貨"); map6.put("發貨額", 1289); list.add(map6); System.out.println("合併前的資料--->>>"+list); //根據month和統計維度兩個key 合計發貨額 Map<String, Map<String, Object>> result = new HashMap<String, Map<String,Object>>(); List<Map<String, Object>> allList = new ArrayList<>(); for(Map<String, Object> map : list){ String id = map.get("month").toString(); String date = map.get("統計維度").toString(); String newId = id+date; Long value = Long.parseLong(map.get("發貨額").toString()); if(result.containsKey(newId)){ Long temp = Long.parseLong(result.get(newId).get("發貨額").toString()); value += temp; result.get(newId).put("發貨額", value); continue; } result.put(newId, map); allList.add(map); } System.out.println("合併後的資料--->>>"+allList); }

 

實現效果:

合併前的資料--->>>[{month=1, 發貨額=1289, 統計維度=延期未發貨}, {month=1, 發貨額=1289, 統計維度=延期未發貨}, {month=1, 發貨額=1289, 統計維度= 當月新增未發貨}, 
          {month=2, 發貨額=1289, 統計維度= 當月新增未發貨}, {month=2, 發貨額=1289, 統計維度= 當月新增未發貨}, {month=2, 發貨額=1289, 統計維度=延期未發貨}]
合併後的資料
--->>>[{month=1, 發貨額=2578, 統計維度=延期未發貨}, {month=1, 發貨額=1289, 統計維度= 當月新增未發貨},
          {month=2, 發貨額=2578, 統計維度= 當月新增未發貨}, {month=2, 發貨額=1289, 統計維度=延期未發貨}]