Java 8中如何统计HashMap的元素值总和?
统计Map中Value值的总和
当然有可行的实现方法啦!其实和你用Stream统计符合条件元素数量的思路一脉相承,只需要把计数操作换成求和操作就可以了,下面给你几种常用的实现方式:
方式一:使用Stream API(推荐,Java 8+)
这是最简洁优雅的方式,根据你的Value类型选择对应的mapToXxx方法:
1. 仅统计Value大于0的总和
如果还是需要保留你原来的过滤条件(只计算Value>0的元素),可以这么写:
// 假设Map的类型是Map<String, Integer>(Key类型不影响,Value为整数) int positiveSum = map.entrySet().stream() .filter(entry -> entry.getValue() > 0) .mapToInt(Map.Entry::getValue) .sum();
如果你的Value是Long类型,把mapToInt换成mapToLong,最后调用sum()即可;如果是Double则用mapToDouble。
2. 统计所有Value的总和
如果不需要过滤,直接操作values()集合会更高效:
int totalSum = map.values().stream() .mapToInt(Integer::intValue) .sum();
方式二:传统循环遍历(兼容Java 8之前版本)
如果项目还在使用较老的Java版本,或者你更习惯传统写法,循环遍历也很直观:
int sum = 0; for (Integer value : map.values()) { // 可选:保留过滤条件 if (value > 0) { sum += value; } }
小提示:如果Value可能为null,记得在过滤或者循环里加非空判断,避免
NullPointerException哦~
内容的提问来源于stack exchange,提问作者Ibrahim Ali
相关产品推荐
相关产品推荐

