java利用stream将List<Map<String, String>>对象转为Map<String,List<String>
时间: 2023-07-09 09:37:55 浏览: 61
可以使用Java 8中的Stream API来实现将List<Map<String, String>>对象转换为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())
.collect(Collectors.groupingBy(Map.Entry::getKey,
Collectors.mapping(Map.Entry::getValue, Collectors.toList())));
```
上述代码中,先将List中的每个Map对象转换为一个包含所有键值对的Stream对象,然后使用flatMap方法将所有键值对合并为一个Stream对象。接着使用Collectors.groupingBy方法按键进行分组,使用Collectors.mapping方法提取每个键对应的值,并将其转换为List对象。
这样就可以将List<Map<String, String>>对象转换为Map<String,List<String>>对象了。
相关问题
java利用stream将List<Map<String, String>>按照其中一个元素作为key,另一个对象作为list对象转为Map<String,List<String>
你可以使用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>>对象了。
java用stream将List<Map<String,String>>以其中一个元素为key转为Map<String,List<String>>
可以使用Java 8的Stream API将List<Map<String,String>>以其中一个元素为key转为Map<String,List<String>>,代码如下:
```java
List<Map<String,String>> list = new ArrayList<>();
Map<String,String> map1 = new HashMap<>();
map1.put("key1","value1");
map1.put("key2","value2");
map1.put("key3","value3");
list.add(map1);
Map<String,String> map2 = new HashMap<>();
map2.put("key1","value4");
map2.put("key2","value5");
map2.put("key3","value6");
list.add(map2);
String key = "key1";
Map<String,List<String>> result = list.stream()
.collect(Collectors.groupingBy(
m -> m.get(key),
Collectors.mapping(m -> m.get(key), Collectors.toList())));
System.out.println(result);
```
其中,key为要转为Map的元素的key,result为转换后的Map。运行以上代码会输出以下结果:
```
{value1=[value1], value4=[value4]}
```
其中,key为元素的值,value为对应元素的List。