2017-04-18 51 views
0

我有4名工人的分布式系统,并且每个都以将它们减小至的ArrayList < MyClass的>减少地图对象插入的ArrayList

发送1个地图<字符串,MyClass的>对象到减速器我试图接近它的方式是通过从工作人员收集所有Map项目到一个ArrayList,然后使用并行流我想使用reduce方法将它们减少到我已初始化到reducer中的列表。这里是我的代码:

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

我上减少方法如下编译错误:

的方法减少(地图<字符串,路线>,BinaryOperator <地图<字符串,路线>>)在类型流<地图<字符串,路线>>不适用的参数(NULL,(<没有类型> RES,<没有类型>米) - > {})

+0

无需并行流。使用列表中的[addAll](https://docs.oracle.com/javase/8/docs/api/java/util/List.html#addAll-java.util.Collection-)方法来添加所有值您使用[values]的地图(https://docs.oracle.com/javase/8/docs/api/java/util/Map.html#values--)。 –

+2

没有'java.util.Map#parallelStream' ...但也许你可以使用这个:'List objects = maps.values()。parallelStream()。collect(Collectors.toList());' –

+0

也许使用'new ArrayList <>(maps.values());' – SilverNak

回答

1

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