java - 如何使用 Java 8 流使用集合流式传输地图?
问题描述
我想使用 Java 8 流来流式传输带有集合的地图。
例如,有以下数据:
Map<String, Collection<Integer>> data;
我想用相应的键字符串来处理处理每个整数值的元素。例如:
data.keyValueStream((k,v)-> ...)
知道如何实现这一目标吗?谢谢。
* 关于“你为什么需要它?”这个问题,可能有很多原因,我不确定它是否重要。无论如何,我会和你一起“流动”......我的具体情况是批量插入数据库中的所有值,在它们的特定键下。让我们保持一个一般的 Java 8 流问题......
解决方案
您可以将您的映射Map<String, Collection<Integer>>
到List<Map.Entry<String, Integer>>
:
data.entrySet().stream()
.flatMap(e -> e.getValue().stream().map(v -> new HashMap.SimpleEntry<>(e.getKey(), v)))
.forEach(e -> System.out.printf("key %s val %d%n", e.getKey(), e.getValue()));
或者:
data.forEach((k, v) -> v.forEach(n -> System.out.printf("key %s val %d%n", k, n)));
推荐阅读
- database - pymongo.errors.ConfigurationError:DNS 标签为空
- datatable - 如何折叠 PrimeReact DataTable 中的其他展开行
- c++ - 即使在 CMake 中指定了我的标头,Visual Studio 怎么找不到我的标头?
- javascript - 我很想在 javascript 中将多个图像下载为 zip 文件
- android - 当我从 Xamarin.Android 中的静态快捷方式启动应用程序时,未安装应用程序
- reactjs - 使用公共 IP 访问在 Azure vm 中运行的 webapp 时出错
- angular - 根据单选按钮值动态禁用角垫单选复选框
- java - 非 html 方法 Spring MVC
- git - 排除 ftp-deploy 中的密钥故障
- c# - Xamarin Forms 在 Shell 页面内显示选取器