使用Java中的lambdas计算嵌套映射的总和

时间:2018-03-01 17:32:05

标签: java lambda java-stream

我有嵌套地图:

Map<String,Map<Integer,List<MyObject>>> myMap;

MyObject有字段&#34; field1 &#34;。

如何计算每个List中所有对象的 field1 的总和?使用Java中的lambda?

2 个答案:

答案 0 :(得分:2)

在地图值上创建一个流,然后连续展平并将该字段提取为sum,然后最终调用sum终端操作。

int summation = myMap.values()
                     .stream()
                     .map(Map::values)
                     .flatMap(Collection::stream)
                     .flatMap(Collection::stream)
                     .mapToInt(MyObject::getField1)
                     .sum();

答案 1 :(得分:0)

尝试

myMap.forEach((k,v)->{v.values().stream().forEach(w->{field1 += field1;});}); return field1;