【发布时间】:2021-12-18 09:11:00
【问题描述】:
这是我的地图Map<LocalDate,List<Integer>> map = new LinkedHashMap<>();
问题 1: 如何计算 Map 中每个列表的总和
地图输出
2020-01-22 [0, 0, 7, 0, 0, 0, 0, 0, 3, 8, 0, 4,0]
2020-01-23 [0, 0, 7, 0, 0, 0, 0, 0, 3, 0, 0, 4,0]
2020-01-24 [0, 0, 7, 0, 0, 0, 0, 0, 3, 0, 0, 5,0]
2020-01-25 [0, 0, 8, 0, 0, 0, 0, 0, 3, 0, 0, 4,0]
2020-01-26 [0, 0, 7, 0, 0, 0, 0, 0, 3, 0, 0, 8,0]
2020-01-27 [0, 0, 9, 0, 0, 0, 0, 0, 3, 0, 0, 4,0]
我的尝试
Map<LocalDate,List<Integer>> map = new LinkedHashMap<>();
List<Integer> integerList =map
.values()
.stream()
.map(l->{
int sum = l
.stream()
.mapToInt(Integer::intValue)
.sum();
return sum;
}).collect(Collectors.toList());
这里的代码我试过了,只能形成新的列表和 计算它。但我想同时显示日期和它的num总和
所需输出(计算并显示每个列表的总和)
2020-01-22 [22]
2020-01-23 [14]
2020-01-24 [15]
2020-01-25 [14]
2020-01-26 [18]
2020-01-27 [16]
【问题讨论】:
-
当您的计算正确时,要获得所需的输出,您应该同时遍历键和值,进行数学运算并将值重新分配给当前键。
-
java流
foreach在这种情况下是否适用于同时迭代key和value? -
不完全是,而是迭代键,然后在每次迭代中调用
get方法。 -
好的,所以迭代键,然后对于键的每次迭代,使用
get检索每个键的整数列表;获取列表时,将我上面的计算应用于列表的总和,对吗?
标签: java functional-programming hashmap java-stream linkedhashmap