List<Map> ziNumbers里面如何根据id和name把重复的数据是合并为一条把他们的number相加
时间: 2024-11-24 14:41:13 浏览: 18
在Java中,如果你有一个`List<Map<String, Object>> ziNumbers`列表,其中每个Map代表一个对象,包含'id', 'name', 和 'number'键值对,并且可能存在重复的'id'和'name',你可以通过流(Stream)操作来合并这些重复的数据并计算它们的'number'总和。这里是一个示例步骤:
```java
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
// 假设ziNumbers已存在
List<Map<String, Object>> ziNumbers = ...;
// 使用Stream处理数据
Map<String, Long> uniqueData = ziNumbers.stream()
.collect(Collectors.groupingBy(map -> map.get("id") + map.get("name"), // 合并条件
Collectors.reducing(0L, (a, b) -> a + ((Number) b.get("number")).longValue(), // 相加操作
(a, b) -> a)); // 函数式接口供后续合并
// 将结果转换回List<Map>
List<Map<String, Object>> result = uniqueData.entrySet().stream()
.map(entry -> Map.of(
"id", entry.getKey().toString(),
"name", entry.getKey().toString(),
"number", entry.getValue()))
.collect(Collectors.toList());
阅读全文