合并集合

合并List>中的重复数据并对某个字段做累加

public class Test {
	
	public static void main(String[] args) {
		//存放所有数据
		List> dataList = new ArrayList>();
		
		Map m1 = new HashMap();
		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 m2 = new HashMap();
		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 m3 = new HashMap();
		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 m4 = new HashMap();
		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> countList = new ArrayList>();//用于存放最后的结果
		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 map : countList) {
			System.out.println(map);
		}
	}
}

你可能感兴趣的:(java后台)