我有一个由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; {})
答案 0 :(得分:1)
假设list
是您的地图列表,请尝试以下操作:
List<MyClass> result = list.stream()
.flatMap(v -> v.values().stream()).collect(Collectors.toList());