将Map对象缩减为ArrayList

时间:2017-04-18 07:54:02

标签: java mapreduce hashmap java-stream

我有一个由4名工人组成的分布式系统,每个人都发送1 Map<字符串,MyClass> 对象为reducer,以便将它们减少为 ArrayList< MyClass>

我尝试接近它的方法是将所有Map项目从worker收集到ArrayList然后使用并行流我想使用reduce方法将它们缩减为我已初始化为的列表减速器。这是我的代码:

    ArrayList<MyClass> result = new ArrayList<MyClass>();
    maps.parallelStream().reduce(null, (res, m)->{
        result.add(m.get(key));
    });

我在reduce方法上遇到以下编译错误:

  

方法reduce&lt; Map&lt; String,Directions&gt;,BinaryOperator&lt; Map&lt; String,Directions&gt;&gt;&gt;类型Stream&lt;地图&LT;字符串,方向&gt; &GT;不适用于参数(null,(&lt; no type&gt; res,&lt; no type&gt; m) - &gt; {})

1 个答案:

答案 0 :(得分:1)

假设list是您的地图列表,请尝试以下操作:

List<MyClass> result = list.stream()
    .flatMap(v -> v.values().stream()).collect(Collectors.toList());