java - Java Stream 将带有 List 值的 Map 转换为一个大列表
问题描述
我有一个Map
这样的:
Map<String, List<Integer>> numbersMap = new HashMap<>();
numbersMap.put("A", Arrays.asList(1,2,3));
numbersMap.put("B", Arrays.asList(4,5,6));
numbersMap.put("C", Arrays.asList(7,8, 9));
我该如何List
摆脱它?
List<Integer> allnumbers = //?
包含1, 2, 3, 4, 5, 6, 7, 8, 9
元素。
解决方案
您将值流式传输并用于flatMap()
创建一个流,该流是每个 List 的流的串联:
List<Integer> allnumbers = numbersMap.values().stream()
.flatMap(List::stream) // secret sauce
.collect(toList());
推荐阅读
- nestjs - 在 TypeORM 查询中有不必要的 leftJoin
- python - 在 iOS 设备上运行时,如何允许我的 Kivy 应用程序访问文本文件?
- reactjs - 键盘日期选择器和图标丢失上可见的向上和向下箭头
- graphviz - Graphviz 边缘标签位置 - 当没有为边缘定义控制点时,graphviz 忽略标签位置
- python - 如何在python中正确创建和导入模块
- shader - 有没有一种特定的方法可以将数组作为常量缓冲区传递给着色器?
- python - Tweepy:无法使用 Tweepy Python 转推,给出 AttributeError
- python - 从列表中排除特定的第 n 个元素后,如何从列表中获取“最后一个”?
- javascript - 未捕获的 SyntaxError:意外的令牌“导出”火力库
- java - 调用Android中第一个活动相机的函数