合并集合

合并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);
		}
	}
}