Yas*_*ida 24 java collections java-8 java-stream collectors
我想List<E>从一个Map<String,List<E>>(E是一个随机类)中提取一个stream().
我想要一个使用java 8流的简单单行方法.
我到现在为止尝试过的事情:
HashMap<String,List<E>> map = new HashMap<>();
List<E> list = map.values(); // does not compile
list = map.values().stream().collect(Collectors.toList()); // does not compile
Run Code Online (Sandbox Code Playgroud)
Ous*_* D. 33
map.values()返回a Collection<List<E>>不是a List<E>,如果你想要后者那么你需要将嵌套展平List<E>为单个List<E>,如下所示:
List<E> result = map.values()
.stream()
.flatMap(List::stream)
.collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)
Had*_*i J 14
或者使用 forEach
map.forEach((k,v)->list.addAll(v));
Run Code Online (Sandbox Code Playgroud)
或者如Aomine所评论的那样使用它
map.values().forEach(list::addAll);
Run Code Online (Sandbox Code Playgroud)
Rav*_*ala 10
以下是使用Java-9及更高版本的另一种方法:
List<E> result = map.values()
.stream()
.collect(Collectors.flatMapping(List::stream, Collectors.toList()));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
801 次 |
| 最近记录: |