將List<Map<String,String>>用stream转为Map<String,List<String>>
时间: 2023-07-09 13:37:32 浏览: 113
JDK8通过Stream 对List,Map操作和互转的实现
5星 · 资源好评率100%
可以使用Java 8的Stream API来将List<Map<String,String>>转化为Map<String,List<String>>。假设我们要将List<Map<String,String>>中的key为"keyName"的元素对应的value值转化为List<String>,并将每个元素的key对应的List<String>收集到Map<String,List<String>>中,可以使用以下代码:
```
List<Map<String, String>> list = ... // 初始化List<Map>对象
Map<String, List<String>> result = list.stream()
.flatMap(map -> map.entrySet().stream())
.filter(entry -> entry.getKey().equals("keyName"))
.collect(Collectors.groupingBy(Map.Entry::getKey, Collectors.mapping(Map.Entry::getValue, Collectors.toList())));
```
这段代码会对List中的每个Map对象执行flatMap操作,将其中的entry打散为一个个单独的entry,然后筛选出key为"keyName"的entry,最后使用groupingBy和mapping方法将每个entry的key对应的value转化为List<String>,并收集到Map<String,List<String>>中。
阅读全文