使用lambda计算嵌套的HashMaps

时间:2017-11-18 15:04:21

标签: java lambda hashmap

我正在处理以下结构。

Map<String, HashMap<Integer, HashMap<Integer, Integer>>> ...

我想用内部HashMap中的值递增计数器。 我可以通过迭代函数或嵌套循环轻松完成。 但是,我正在寻找使用lambdas的优雅解决方案。

1 个答案:

答案 0 :(得分:5)

您可以使用.values().stream()获取Stream中的Map个值。然后,您可以重复应用.flatMap以剥离嵌套结构,直到获得Stream<Integer>。然后,您可以使用IntStream创建.mapToInt以获取所有值的.sum()

int sum = outerMostMap.values().stream()   // HashMap<Integer, HashMap<Integer, Integer>>
    .flatMap(map -> map.values().stream()) // HashMap<Integer, Integer>
    .flatMap(map -> map.values().stream()) // Integer
    .mapToInt(Integer::intValue)           // int
    .sum();