Java:获取嵌套在HashMap中的列表中的条目列表

时间:2016-12-04 17:13:37

标签: java lambda java-8 java-stream

我有一个HashMap<Foo, ArrayList<Bar>> map具有以下结构:

|-- a
|   |-- a1
|   |-- a2
|   `-- a3
|
`-- b
    |-- b1
    |-- b2
    `-- b3

其中ab是类型Fooa1a2等类型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表达式)?

1 个答案:

答案 0 :(得分:3)

List<Bar> bars = map.values()
                    .stream()
                    .flatMap(Collection::stream)
                    .collect(Collectors.toList());