java中把[{name:a,num:5},{name:b,num:2}{name:a,num:15}{name:b,num:8}{name:a,num:6}]这个集合转成[{name:a,num:26},{name:b,num:10}]
时间: 2024-02-25 07:51:47 浏览: 20
您好,可以使用 Java 中的 Map 来实现该需求,具体代码如下:
```java
import java.util.*;
public class Main {
public static void main(String[] args) {
List<Map<String, Object>> list = new ArrayList<>();
list.add(new HashMap<String, Object>() {{
put("name", "a");
put("num", 5);
}});
list.add(new HashMap<String, Object>() {{
put("name", "b");
put("num", 2);
}});
list.add(new HashMap<String, Object>() {{
put("name", "a");
put("num", 15);
}});
list.add(new HashMap<String, Object>() {{
put("name", "b");
put("num", 8);
}});
list.add(new HashMap<String, Object>() {{
put("name", "a");
put("num", 6);
}});
Map<String, Integer> map = new HashMap<>();
for (Map<String, Object> item : list) {
String name = (String) item.get("name");
int num = (int) item.get("num");
if (map.containsKey(name)) {
map.put(name, map.get(name) + num);
} else {
map.put(name, num);
}
}
List<Map<String, Object>> result = new ArrayList<>();
for (Map.Entry<String, Integer> entry : map.entrySet()) {
Map<String, Object> item = new HashMap<>();
item.put("name", entry.getKey());
item.put("num", entry.getValue());
result.add(item);
}
System.out.println(result);
}
}
```
上述代码中,我们首先定义了一个包含多个 Map 的列表 `list`,每个 Map 表示一个人的信息,其中包含了 `name` 和 `num` 两个字段。然后我们定义了一个空的 Map `map`,用于保存每个 `name` 对应的 `num` 总和。接下来我们遍历 `list` 中的每个 Map,取出该 Map 的 `name` 和 `num` 字段的值,并检查 `name` 是否已经存在于 `map` 中。如果存在,则将该字段的值加上当前 Map 的 `num` 值;否则,将该字段的值设置为当前 Map 的 `num` 值。最后,我们遍历 `map` 中的每个元素,将每个元素转成 Map 形式,并添加到结果列表 `result` 中。
希望我的回答能够帮到您!