List<Map> ziNumbers里面如何根据id和name把重复的数据是合并为一条把他们的number相加详细代码
时间: 2024-11-24 11:41:49 浏览: 6
要在`List<Map<String, Object>> ziNumbers`列表中根据ID和NAME合并重复项,并将NUMBER字段相加,你可以首先创建一个新的Map作为结果容器,然后遍历原列表。对于每个Map,检查它是否已经存在于结果Map中。如果存在,就将当前Map的NUMBER字段累加到已存在的条目;如果不存在,就添加新的键值对。以下是Java代码示例:
```java
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class Main {
public static void main(String[] args) {
// 假设ziNumbers是一个已有的List<Map>
List<Map<String, Object>> ziNumbers = ...; // 示例数据填充这里
// 创建一个新的Map来存储合并后的结果
Map<String, Integer> combinedData = new HashMap<>();
// 遍历ziNumbers
for (Map<String, Object> entry : ziNumbers) {
String id = (String) entry.get("id");
String name = (String) entry.get("name");
int number = (int) entry.get("number");
// 如果(id, name)组合已经在combinedData中,则累加number
if (combinedData.containsKey(id + "_" + name)) {
combinedData.put(id + "_" + name, combinedData.get(id + "_" + name) + number);
} else {
// 否则,直接添加新的键值对
combinedData.put(id + "_" + name, number);
}
}
// 将Map转换回List<Map>
List<Map<String, Object>> result = new ArrayList<>();
for (Map.Entry<String, Integer> entry : combinedData.entrySet()) {
Map<String, Object> map = new HashMap<>();
map.put("id", entry.getKey().split("_")[0]);
map.put("name", entry.getKey().split("_")[1]);
map.put("number", entry.getValue());
result.add(map);
}
System.out.println(result); // 打印合并并累加后的结果
}
}
```
在这个例子中,我们假设所有的id和name都是字符串类型,而number是整数类型。如果你的数据结构有所不同,你需要相应地调整代码。
阅读全文