List<Map> ziNumbers里面有很多元素如何根据id和name把重复的数据是合并为一条把他们的number相加详细代码
时间: 2024-11-24 07:41:41 浏览: 5
Java中 List《map》把里面map中某个key相同记录的其他key 的 value 合并
在Java中,如果你有一个`List<Map<String, Object>> ziNumbers`列表,其中包含一些`Map`,并且你想根据`id`和`name`字段去合并重复的数据并将对应的`number`字段相加,你可以这样做:
首先,你需要创建一个新的`Map`来存储合并后的数据,然后遍历`ziNumbers`列表,检查每个`Map`是否已经存在于新地图中。如果存在,则将当前`Map`的`number`值累加;如果不存在,就添加到新地图并初始化`number`。
这是一个简单的示例代码:
```java
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
List<Map<String, Object>> ziNumbers = ... // 初始化你的列表
// 创建一个HashMap来存储合并后的数据
Map<String, Map<String, Long>> combinedData = new HashMap<>();
for (Map<String, Object> map : ziNumbers) {
String id = (String) map.get("id");
String name = (String) map.get("name");
Long number = (Long) map.get("number");
if (!combinedData.containsKey(id)) {
combinedData.put(id, new HashMap<>());
}
if (!combinedData.get(id).containsKey(name)) {
combinedData.get(id).put(name, number);
} else {
long existingNumber = (long) combinedData.get(id).get(name);
combinedData.get(id).put(name, existingNumber + number);
}
}
// 将结果转换回List<Map>
List<Map<String, Object>> result = new ArrayList<>();
for (Map.Entry<String, Map<String, Long>> entry : combinedData.entrySet()) {
result.add(entry.getValue());
}
// 结果是按id和name合并并相加后的数据
阅读全文