java利用stream将List<Map<String, String>>按照其中一个元素作为key,另一个对象作为list对象转为Map<String,List<String>
时间: 2023-11-11 22:25:17 浏览: 165
你可以使用Java 8中的Stream API来实现将List<Map<String, String>>对象按照其中一个元素作为key,另一个元素作为List对象转换为Map<String,List<String>>,具体代码如下:
```java
List<Map<String, String>> list = new ArrayList<>();
// 假设 list 中有多个 Map<String, String> 对象
Map<String, List<String>> result = list.stream()
.flatMap(map -> map.entrySet().stream())
.filter(entry -> "key".equals(entry.getKey())) // 过滤出指定的 key
.collect(Collectors.groupingBy(Map.Entry::getValue,
Collectors.mapping(map -> map.get("value"), Collectors.toList())));
```
上述代码中,先将List中的每个Map对象转换为一个包含所有键值对的Stream对象,然后使用flatMap方法将所有键值对合并为一个Stream对象。接着使用filter方法过滤出指定的key,然后使用Collectors.groupingBy方法按值进行分组,使用Collectors.mapping方法提取每个值对应的另一个元素,并将其转换为List对象。
这样就可以将List<Map<String, String>>对象按照其中一个元素作为key,另一个元素作为List对象转换为Map<String,List<String>>对象了。
阅读全文