java - 通过迭代集合添加并发性,映射到多个哈希映射并减少到一个
问题描述
有一个特定的用例,但不太确定最佳方法。
所以目前的方法是我迭代一个对象集合(可关闭的迭代器)并将它们映射到一个哈希图中(适当地处理冲突,通过对象的日期属性进行比较)。
我正在寻找一种并行方法来加快速度,最初的想法是使用 Java 8 流并行和 forEach,利用并发哈希图来启用并发性。这种方法的主要瓶颈似乎是并发 hashmap,并且这种方法在添加并发方面没有任何改进。
我现在的想法是并行映射到多个哈希图。然后减少为一个单独的哈希图来适当地处理冲突。想知道如何使用 Streams 在 Java 中实现这种方法。我知道有内置的 map 和 reduce 操作,但不确定收集多个 hashmap 的方法(执行操作并添加到集合中?)。
解决方案
尝试使用 groupingBy() 函数。例如
stream.collect(Collectors.groupingBy(Locale::getCountry));
生成以国家为键、以该国家为值的区域设置的地图
推荐阅读
- optimization - 如何使用 gurobi 计划生产并最大限度地减少转换时间
- swift - 如果在 viewDidLoad() 中调用了 4 个带有闭包的 API,那么 hideIndicator 应该放在哪里?
- reactjs - useForm 中的 DefaultValues 未使用 useFormContext 正确更新
- java - 如何从复选框数组中获取选定的复选框
- logging - 如何将日志从内核空间写入特定文件?
- jsf - Primefaces autocomplete:自动选择项目
- apache-spark-mllib - 将 Spark MLlib 模型从 R 记录(然后应用)到 MLflow
- google-analytics-api - Google Search Console API 未返回所有结果
- .net - Jenkins 一直显示错误为“MSBUILD:错误 MSB1009:项目文件不存在。” 在尝试使用 Jenkins 构建 .NET 核心应用程序时
- python - how to set correct batch_size and steps_per_epoch in keras?