You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.12 04:16:45