我正在处理以下结构。
Map<String, HashMap<Integer, HashMap<Integer, Integer>>> ...
我想用内部HashMap中的值递增计数器。 我可以通过迭代函数或嵌套循环轻松完成。 但是,我正在寻找使用lambdas的优雅解决方案。
答案 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();