合并List<Map<String,String>>中的重复数据并对某个字段作累加java
public class Test { public static void main(String[] args) { //存放全部数据 List<Map<String, Object>> dataList = new ArrayList<Map<String,Object>>(); Map<String, Object> m1 = new HashMap<String, Object>(); m1.put("cpcj_sum", 0); m1.put("cjcj_sum", 0); m1.put("cycj_sum", 0); m1.put("nxcj_sum", 0); m1.put("lxcj_sum", 0); m1.put("yclcj_sum", 5); m1.put("zjcj_sum", 0); m1.put("days", "2017-11-24"); m1.put("xkcj_sum", 0); dataList.add(m1); Map<String, Object> m2 = new HashMap<String, Object>(); m2.put("cpcj_sum", 0); m2.put("cjcj_sum", 0); m2.put("cycj_sum", 0); m2.put("nxcj_sum", 0); m2.put("lxcj_sum", 1); m2.put("yclcj_sum", 0); m2.put("zjcj_sum", 0); m2.put("days", "2017-11-24"); m2.put("xkcj_sum", 0); dataList.add(m2); Map<String, Object> m3 = new HashMap<String, Object>(); m3.put("cpcj_sum", 0); m3.put("cjcj_sum", 0); m3.put("cycj_sum", 0); m3.put("nxcj_sum", 1); m3.put("lxcj_sum", 0); m3.put("yclcj_sum", 0); m3.put("zjcj_sum", 0); m3.put("days", "2017-11-24"); m3.put("xkcj_sum", 0); dataList.add(m3); Map<String, Object> m4 = new HashMap<String, Object>(); m4.put("cpcj_sum", 0); m4.put("cjcj_sum", 0); m4.put("cycj_sum", 0); m4.put("nxcj_sum", 1); m4.put("lxcj_sum", 0); m4.put("yclcj_sum", 0); m4.put("zjcj_sum", 0); m4.put("days", "2017-11-25"); m4.put("xkcj_sum", 0); dataList.add(m4); List<Map<String, Object>> countList = new ArrayList<Map<String,Object>>();//用于存放最后的结果 for (int i = 0; i < dataList.size(); i++) { String days = String.valueOf(dataList.get(i).get("days").toString()); int flag = 0;//0为新增数据,1为增长count for (int j = 0; j < countList.size(); j++) { String newdays = String.valueOf(dataList.get(j).get("days").toString()); if (days.equals(newdays)) { int cpcj_sum = Integer.parseInt(String.valueOf(dataList.get(i).get("cpcj_sum"))) + Integer.parseInt(String.valueOf(dataList.get(j).get("cpcj_sum"))); int cjcj_sum = Integer.parseInt(String.valueOf(dataList.get(i).get("cjcj_sum"))) + Integer.parseInt(String.valueOf(dataList.get(j).get("cjcj_sum"))); int cycj_sum = Integer.parseInt(String.valueOf(dataList.get(i).get("cycj_sum"))) + Integer.parseInt(String.valueOf(dataList.get(j).get("cycj_sum"))); int nxcj_sum = Integer.parseInt(String.valueOf(dataList.get(i).get("nxcj_sum"))) + Integer.parseInt(String.valueOf(dataList.get(j).get("nxcj_sum"))); int lxcj_sum = Integer.parseInt(String.valueOf(dataList.get(i).get("lxcj_sum"))) + Integer.parseInt(String.valueOf(dataList.get(j).get("lxcj_sum"))); int yclcj_sum = Integer.parseInt(String.valueOf(dataList.get(i).get("yclcj_sum"))) + Integer.parseInt(String.valueOf(dataList.get(j).get("yclcj_sum"))); int zjcj_sum = Integer.parseInt(String.valueOf(dataList.get(i).get("zjcj_sum"))) + Integer.parseInt(String.valueOf(dataList.get(j).get("zjcj_sum"))); int xkcj_sum = Integer.parseInt(String.valueOf(dataList.get(i).get("xkcj_sum"))) + Integer.parseInt(String.valueOf(dataList.get(j).get("xkcj_sum"))); countList.get(j).put("cpcj_sum", cpcj_sum); countList.get(j).put("cjcj_sum", cjcj_sum); countList.get(j).put("cycj_sum", cycj_sum); countList.get(j).put("nxcj_sum", nxcj_sum); countList.get(j).put("lxcj_sum", lxcj_sum); countList.get(j).put("yclcj_sum", yclcj_sum); countList.get(j).put("zjcj_sum", zjcj_sum); countList.get(j).put("xkcj_sum", xkcj_sum); flag = 1; continue; } } if (flag == 0) { countList.add(dataList.get(i)); } } for (Map<String, Object> map : countList) { System.out.println(map); } } }