Map<String,List<T>>转成List<T>
时间: 2023-08-24 13:04:02 浏览: 49
可以使用 Java 8 中的流(Stream)来实现将 Map<String, List<T>> 转成 List<T> 的操作。以下是示例代码:
```java
Map<String, List<T>> map = ... // 假设已经有一个 Map<String, List<T>> 对象
List<T> list = map.values().stream() // 获取 Map 中的所有 value(即 List<T>)
.flatMap(Collection::stream) // 将所有 List<T> 中的元素合并成一个 Stream<T>
.collect(Collectors.toList()); // 将 Stream<T> 转成 List<T>
```
解释一下上面的代码:
1. 首先通过 `map.values()` 获取 Map 中的所有 value,得到一个 `Collection<List<T>>` 对象;
2. 然后调用 `stream()` 方法将其转成一个流;
3. 接着调用 `flatMap(Collection::stream)` 方法将所有 List<T> 中的元素合并成一个 Stream<T>;
4. 最后调用 `collect(Collectors.toList())` 方法将 Stream<T> 转成 List<T>。
这样就可以将 Map<String, List<T>> 转成 List<T> 了。
相关问题
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>
Map<String, List<T>> 到 List<T> 的转换
可以使用流操作来实现 `Map<String, List<T>>` 到 `List<T>` 的转换。具体实现可以参考以下代码:
```java
Map<String, List<T>> map = ...; // 假设已经有一个 Map<String, List<T>> 对象
List<T> list = map.values().stream()
.flatMap(Collection::stream)
.collect(Collectors.toList());
```
上述代码中,首先通过 `map.values()` 方法获取 `Map` 中所有的 `List<T>` 值集合,然后使用 `flatMap` 方法将多个 `List<T>` 合并成一个 `Stream<T>` 流,最后使用 `Collectors.toList()` 方法将所有元素收集到一个 `List<T>` 集合中。
需要注意的是,上述代码只能保证 `List<T>` 中元素的顺序,不能保证不重复。如果需要去重,可以在 `Collectors.toList()` 方法前加上 `distinct()` 方法。