springboot里面List<Map>集合里面里面有很多元素如何根据id和name把重复的数据是合并为一条把他们的number相加详细代码
时间: 2024-11-25 09:31:25 浏览: 15
在Spring Boot项目中,如果你有一个`List<Map<String, Object>>`类型的集合,其中包含一些具有相同`id`和`name`但`number`需要累加的元素,你可以创建一个新的Map集合,并遍历原有列表,对重复的条目进行处理。下面是一个简单的示例代码:
```java
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class DataProcessor {
public static void main(String[] args) {
// 假设这是你的原始数据列表
List<Map<String, Object>> dataList = new ArrayList<>();
// 添加示例数据...
// 创建一个新的HashMap用于存储结果
Map<String, Map<String, Integer>> result = new HashMap<>();
// 遍历原始列表
for (Map<String, Object> item : dataList) {
String id = (String) item.get("id");
String name = (String) item.get("name");
int number = (int) item.get("number");
// 如果已经在result中有相同的(id, name),则累加number
if (result.containsKey(id)) {
Map<String, Integer> existingItem = result.get(id);
existingItem.put("number", existingItem.getOrDefault("number", 0) + number);
} else {
// 否则直接添加到result
result.put(id, new HashMap<>());
result.get(id).put("id", id);
result.get(id).put("name", name);
result.get(id).put("number", number);
}
}
// 将结果转换回List<Map<String, Object>>
List<Map<String, Object>> processedData = new ArrayList<>(result.values());
// 打印处理后的数据
System.out.println(processedData);
}
}
```
这个例子中,我们首先检查每个元素是否已经在`result`中存在。如果存在,就将当前的`number`值累加到对应的键下;如果没有,我们就创建一个新的映射并将所有信息添加进去。
阅读全文