2017-04-18 52 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是您的地圖列表,請嘗試以下操作: