首页 > 解决方案 > 通过迭代集合添加并发性,映射到多个哈希映射并减少到一个

问题描述

有一个特定的用例,但不太确定最佳方法。

所以目前的方法是我迭代一个对象集合(可关闭的迭代器)并将它们映射到一个哈希图中(适当地处理冲突,通过对象的日期属性进行比较)。

我正在寻找一种并行方法来加快速度,最初的想法是使用 Java 8 流并行和 forEach,利用并发哈希图来启用并发性。这种方法的主要瓶颈似乎是并发 hashmap,并且这种方法在添加并发方面没有任何改进。

我现在的想法是并行映射到多个哈希图。然后减少为一个单独的哈希图来适当地处理冲突。想知道如何使用 Streams 在 Java 中实现这种方法。我知道有内置的 map 和 reduce 操作,但不确定收集多个 hashmap 的方法(执行操作并添加到集合中?)。

标签: javamultithreadingjava-8mapreduceconcurrenthashmap

解决方案


尝试使用 groupingBy() 函数。例如

stream.collect(Collectors.groupingBy(Locale::getCountry));

生成以国家为键、以该国家为值的区域设置的地图


推荐阅读