遇到的一个问题:List<Map<String,Integer>>其中每个map中只有一组值,
但是这些map中有key相同的,需要将key相同的value合并成一个新的map
/** * 通过多个日期的map列表合并计算,产生一个map列表 * @param dateLists * @return */ private Map<String,Integer> getHourMap(List<Map<String,Integer>> dateLists){ Map<String,Integer> hourMap = new HashMap<>(); for(Map<String,Integer> map:dateLists){ for(Map.Entry<String,Integer> en:map.entrySet()){ int newCount = en.getValue(); if(hourMap.containsKey(en.getKey())){//结果map中有此key newCount += hourMap.get(en.getKey()); } hourMap.put(en.getKey(),newCount); } } return hourMap; }
测试如下
@Test public void test3(){ List<Map<String,Integer>> dateList = new ArrayList<>(); Map<String,Integer> map1 = new HashMap<>(); map1.put("0",1); map1.put("1",6); map1.put("2",4); map1.put("3",2); map1.put("4",5); Map<String,Integer> map2 = new HashMap<>(); map2.put("0",0); map2.put("1",4); map2.put("2",5); map2.put("3",1); map2.put("4",2); dateList.add(map1); dateList.add(map2); Map<String,Integer> result = getHourMap(dateList); System.out.println(result); }
结果为:{3=10, 2=10, 1=10, 0=10, 4=10}