【发布时间】:2017-09-13 23:11:07
【问题描述】:
我有一个由 4 个工作人员组成的分布式系统,每个工作人员都向减速器发送 1 个 Map 对象,以便将它们简化为 ArrayList
我尝试解决的方法是将所有 Map 项从工作人员收集到一个 ArrayList 中,然后使用并行流我想使用 reduce 方法将它们减少到我已初始化到 reducer 的列表中。这是我的代码:
ArrayList<MyClass> result = new ArrayList<MyClass>();
maps.parallelStream().reduce(null, (res, m)->{
result.add(m.get(key));
});
reduce 方法出现以下编译错误:
Stream
【问题讨论】:
-
没有
java.util.Map#parallelStream...但也许你可以使用这个:List<Object> objects = maps.values().parallelStream().collect(Collectors.toList()); -
也许用
new ArrayList<>(maps.values()); -
假设
list是您的地图列表,请尝试以下操作:List<MyClass> result = list.stream().flatMap(v -> v.values().stream()).collect(Collectors.toList()); -
@JureKolenko 成功了。谢谢。你可以把它作为答案,以便我批准它
标签: java mapreduce hashmap java-stream