通过遍历集合来增加并发性,映射到多个哈希映射并减少为一个

时间:2018-07-13 18:08:50

标签: java multithreading java-8 mapreduce concurrenthashmap

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

所以现在的当前方法是,我要遍历对象的集合(可关闭的迭代器),然后将它们映射到哈希图中(适当地处理冲突,通过对象的date属性进行比较)。

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

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

1 个答案:

答案 0 :(得分:0)

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

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

生成一个地图,该地图将国家/地区作为键,将以该国家/地区作为地区的值