如何从HashMap<字符串,列表<E<>>中获取列表<E>>>

我想使用 从 a (是一个随机类) 中提取一个。List<E>Map<String, List<E>>Estream()

我想要一个使用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

答案 1

map.values()返回一个 not a ,如果你想要后者,那么你需要将嵌套平展成一个,如下所示:Collection<List<E>>List<E>List<E>List<E>

List<E> result = map.values()
                    .stream()
                    .flatMap(List::stream)
                    .collect(Collectors.toList());

答案 2

或使用forEach

 map.forEach((k,v)->list.addAll(v));

或者正如青峰评论的那样使用这个

map.values().forEach(list::addAll);