java将 List=[{id:1,name:"zu专家"},{userId:2,name:"zjx专家"}]转换为List2 = [{id:1,userId:2},{name:"zu专家",name:"zjx专家"}]的格式
时间: 2024-09-20 08:13:33 浏览: 19
在Java中,如果你想将一个`List<Map<String, Object>>`列表转换成另一个`List<Object>`列表,其中每个元素包含两个键值对而不是一个完整的Map,你可以使用流(Stream) API以及`Collectors.groupingBy()`函数。假设你的原始数据结构是一个map列表,你可以这样做:
```java
import java.util.*;
import java.util.stream.Collectors;
List<Map<String, String>> list1 = Arrays.asList(
new HashMap<>(){put("id", "1"); put("name", "zu专家")},
new HashMap<>(){put("userId", "2"); put("name", "zjx专家")}
);
List<Object> list2 = list1.stream()
.flatMap(map -> Stream.of(map.entrySet()))
.collect(Collectors.groupingBy(Map.Entry::getKey, Collectors.mapping(Map.Entry::getValue, Collectors.toList())));
// 输出类似:[{"id":1, "values":["zu专家"]}, {"userId":2, "values":["zjx专家"]}]
```
这将创建一个新的列表,其中每个元素都是一个Map的键,其对应的值被收集到一个名为"values"的List中。请注意,这个例子中假设name字段只会在一个用户对象中出现一次,如果有多次,你需要进一步处理。
阅读全文