我有一个HashMap<Foo, ArrayList<Bar>> map
具有以下结构:
|-- a
| |-- a1
| |-- a2
| `-- a3
|
`-- b
|-- b1
|-- b2
`-- b3
其中a
和b
是类型Foo
和a1
,a2
等类型Bar
类型的对象。
我想要的是具有以下结构的List<Bar>
:
|-- a1
|-- a2
|-- a3
|-- b1
|-- b2
`-- b3
现在我有了这段代码:
ArrayList<Bar> tempList = new ArrayList<>();
map.values().forEach(tempList::addAll);
return tempList;
但这感觉有点笨拙和不雅。
如何使用标准Java API实现此目的,最好使用java.util.Stream
(或lambda表达式)?
答案 0 :(得分:3)
List<Bar> bars = map.values()
.stream()
.flatMap(Collection::stream)
.collect(Collectors.toList());