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("name", "张三");
m1.put("afterSaleProfit", 1.3);
dataList.add(m1);
Map<String, Object> m2 = new HashMap<String, Object>();
m2.put("name", "李四");
m2.put("afterSaleProfit", 2);
dataList.add(m2);
Map<String, Object> m3 = new HashMap<String, Object>();
m3.put("name", "李四");
m3.put("afterSaleProfit", 1.2);
dataList.add(m3);
Map<String, Object> m4 = new HashMap<String, Object>();
m4.put("name", "张三");
m4.put("afterSaleProfit", 1);
dataList.add(m4);
List<Map<String,Object>> countList = combineMap("name", dataList);
for (Map<String, Object> map : countList) {
System.out.println(map);
}
}
/**
*
* @param combineField 根据该字段进行合并
* @param dataList 原始数据
* @return
*/
public static List<Map<String, Object>> combineMap(String combineField, List<Map<String, Object>> dataList){
//用于存放最后的结果
List<Map<String, Object>> countList = new ArrayList<Map<String,Object>>();
for (int i = 0; i < dataList.size(); i++) {
String oldCombineField = String.valueOf(dataList.get(i).get(combineField));
int flag = 0;//0为新增数据,1为增加count
for (int j = 0; j < countList.size(); j++) {
String newCombineField = String.valueOf(countList.get(j).get(combineField));
if (oldCombineField.equals(newCombineField)) {
//做累加的操作
double afterSaleProfit = Double.parseDouble(String.valueOf(dataList.get(i).get("afterSaleProfit"))) + Double.parseDouble(String.valueOf(countList.get(j).get("afterSaleProfit")));
countList.get(j).put("afterSaleProfit", afterSaleProfit);
flag = 1;
break;
}
}
if (flag == 0) {
countList.add(dataList.get(i));
}
}
return countList;
}