List consplanAchievementByName = datacenterV5Dao.getConsplanAchievementByName(jsonObject); 有这样一个list list里面的数据是 "consplanAchievementByName": [ { "taskname": "加强党的建设", "total": 1, "endtotal": 1 }, { "taskname": "加强党的建设", "total": 1, "endtotal": 1 }, { "taskname": "加强党的建设", "total": 1, "endtotal": 1 }, { "taskname": "加强党的建设", "total": 1, "endtotal": 1 }, { "taskname": "测试合计", "total": 1, "endtotal": 1 } ], 我想让相同的taskname的total和endtotal 加在一起 java代码实现
时间: 2024-02-14 14:24:26 浏览: 14
可以使用一个HashMap来存储每个taskname对应的total和endtotal的和,然后遍历list将数据加入到HashMap中。最后再遍历HashMap将数据放回到一个新的List中。以下是示例代码:
```java
List<Map<String, Object>> resultList = new ArrayList<>();
Map<String, Map<String, Integer>> resultMap = new HashMap<>();
for (Map<String, Object> map : consplanAchievementByName) {
String taskname = (String) map.get("taskname");
int total = (int) map.get("total");
int endtotal = (int) map.get("endtotal");
if (!resultMap.containsKey(taskname)) {
resultMap.put(taskname, new HashMap<String, Integer>());
resultMap.get(taskname).put("total", 0);
resultMap.get(taskname).put("endtotal", 0);
}
resultMap.get(taskname).put("total", resultMap.get(taskname).get("total") + total);
resultMap.get(taskname).put("endtotal", resultMap.get(taskname).get("endtotal") + endtotal);
}
for (String taskname : resultMap.keySet()) {
Map<String, Object> map = new HashMap<>();
map.put("taskname", taskname);
map.put("total", resultMap.get(taskname).get("total"));
map.put("endtotal", resultMap.get(taskname).get("endtotal"));
resultList.add(map);
}
```