集合List 流 转成Map<String,List<String>>
时间: 2024-01-01 07:21:07 浏览: 89
可以使用Java 8中的Stream API将List转换为Map<String, List<String>>。具体实现如下所示:
```java
List<String> list = Arrays.asList("apple", "banana", "cherry", "date", "elderberry", "fig", "grape");
Map<String, List<String>> map = list.stream()
.collect(Collectors.groupingBy(s -> s.substring(0, 1).toUpperCase()));
```
上述代码中,我们首先创建了一个包含多个字符串的List。然后,我们使用Stream API的groupingBy方法将这个List转换为一个Map,其中键是每个字符串的首字母大写,值是以该字母开头的所有字符串的列表。
如果你的List中的元素是Map<String, Object>类型,你可以使用以下代码将其转换为Map<String, List<Object>>类型:
```java
List<Map<String, Object>> list = new ArrayList<>();
Map<String, List<Object>> map = list.stream()
.flatMap(m -> m.entrySet().stream())
.collect(Collectors.groupingBy(Map.Entry::getKey,
Collectors.mapping(Map.Entry::getValue, Collectors.toList())));
```
上述代码中,我们首先创建了一个包含多个Map的List。然后,我们使用Stream API的flatMap方法将每个Map转换为其entrySet的流。接下来,我们使用groupingBy方法将这个流转换为一个Map,其中键是每个Map中的键,值是所有Map中该键对应的值的列表。注意,我们使用mapping方法将entry的值映射为其值的列表。
阅读全文