为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕的地8271018 2021-04-01 14:10:23
我想List<E>从使用Map<String, List<E>>(E是一个随机类)中提取一个stream()。我想要一个使用Java 8流的简单的单行方法。到目前为止,我一直在尝试:HashMap<String,List<E>> map = new HashMap<>();List<E> list = map.values(); // does not compilelist = map.values().stream().collect(Collectors.toList()); // does not compile
查看完整描述

3 回答

?
慕尼黑5688855

TA贡献1848条经验 获得超2个赞

map.values()返回一个Collection<List<E>>not List<E>,如果需要后者,则需要按以下步骤将嵌套拼合List<E>为单个List<E>:


List<E> result = map.values()

                    .stream()

                    .flatMap(List::stream)

                    .collect(Collectors.toList());


查看完整回答
反对 回复 2021-04-14
?
当年话下

TA贡献1890条经验 获得超9个赞

或使用 forEach

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

或如Aomine所评论使用的

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


查看完整回答
反对 回复 2021-04-14
?
慕尼黑的夜晚无繁华

TA贡献1864条经验 获得超6个赞

这是使用Java-9及更高版本的替代方法:


List<E> result = map.values()

                    .stream()

                    .collect(Collectors.flatMapping(List::stream, Collectors.toList()));


查看完整回答
反对 回复 2021-04-14
  • 3 回答
  • 0 关注
  • 311 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信