如何获取列表<E>从 HashMap<String,List<E>>

How to get a Listlt;Egt; from a HashMaplt;String,Listlt;Egt;gt;(如何获取列表lt;Egt;从 HashMaplt;String,Listlt;Egt;gt;)

本文介绍了如何获取列表<E>从 HashMap<String,List<E>>的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想从 Map 中提取一个 List<E> (E 是随机的类)使用 stream().

I want to extract a List<E> from a Map<String, List<E>> (E is a random Class) using stream().

我想要一个使用 java 8 的流的简单单行方法.

I want a simple one-line method using java 8's stream.

到目前为止我所尝试的:

What I have tried until now :

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

推荐答案

map.values() 返回一个 Collection> 而不是 >List<E>,如果你想要后者,那么你需要将嵌套的 List<E> 展平为单个 List<E> 为如下:

map.values() returns a Collection<List<E>> not a List<E>, if you want the latter then you're required to flatten the nested List<E> into a single List<E> as follows:

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

这篇关于如何获取列表&lt;E&gt;从 HashMap&lt;String,List&lt;E&gt;&gt;的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本文标题为:如何获取列表&lt;E&gt;从 HashMap&lt;String,List&lt;E&gt;&gt;

基础教程推荐