将一个list转成map<String,List<>>
时间: 2023-11-11 09:30:52 浏览: 33
好的,你可以使用Java 8的Stream API将一个List转换成Map<String, List<?>>,示例代码如下:
```
List<String> list = Arrays.asList("a", "b", "c", "d", "e", "a", "b");
Map<String, List<String>> map = list.stream()
.collect(Collectors.groupingBy(Function.identity()));
```
这段代码首先使用Arrays.asList()方法创建了一个字符串类型的List。然后使用Stream API的collect方法,结合Collectors.groupingBy()方法将List中的元素按照键值进行分组,最终得到一个Map<String, List<String>>类型的结果,其中每个键都对应一个List,这个List中包含了原始List中所有和该键相同的元素。
相关问题
Map<String, List<String>> 转成 List<String>
要将Map<String, List<String>>转换为List<String>,可以使用以下步骤:
1. 首先,声明一个空的List<String>来存储结果。
2. 然后,使用Map的values()方法来获取Map中的所有值,返回一个Collection<List<String>>。
3. 接着,使用forEach循环遍历Collection<List<String>>中的每一个List<String>。
4. 在循环内部,使用addAll方法将每一个List<String>中的元素添加到之前声明的空List<String>中。
5. 最后,返回这个包含所有元素的List<String>。
这样就成功将Map<String, List<String>>转换为List<String>了。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
集合List 流 转成Map<String,List<String>>
可以使用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的值映射为其值的列表。