Llst<Map> 行转列
时间: 2023-10-15 16:08:28 浏览: 33
您可以使用Java 8的Stream API来实现将List<Map>的行转列操作。具体步骤如下:
假设有这样一个List<Map>:
```
List<Map<String, Object>> list = new ArrayList<>();
Map<String, Object> map1 = new HashMap<>();
map1.put("id", "1");
map1.put("name", "Alice");
map1.put("age", 25);
list.add(map1);
Map<String, Object> map2 = new HashMap<>();
map2.put("id", "2");
map2.put("name", "Bob");
map2.put("age", 30);
list.add(map2);
```
现在要将其转换为以下形式:
```
Map<String, List<Object>> result = new HashMap<>();
result.put("id", Arrays.asList("1", "2"));
result.put("name", Arrays.asList("Alice", "Bob"));
result.put("age", Arrays.asList(25, 30));
```
可以使用以下代码实现:
```
Map<String, List<Object>> result = list.stream()
.flatMap(map -> map.entrySet().stream())
.collect(Collectors.groupingBy(
Map.Entry::getKey,
Collectors.mapping(Map.Entry::getValue, Collectors.toList())
));
```
这里使用了flatMap方法将每个Map转换为它的entry集合,然后使用groupingBy方法将entry按照key分组,再使用mapping和toList方法将entry的value收集到一个List中。最终得到了行转列后的Map。