商城首页欢迎来到中国正版软件门户

您的位置: 首页 > 文章列表 > 编程开发 > Java Stream API数值统计:SummaryStatistics应用

Java Stream API数值统计:SummaryStatistics应用

  发布于2026-06-23 阅读(0)

扫一扫,手机访问

Ja va Stream API 里的 SummaryStatistics,绝对是数值统计场景下最省心的工具——它不会只给你一个值,而是一次性打包返回计数、总和、最小值、最大值和平均值。报表生成、监控指标汇总、数据探查,这几个场景里它几乎是标配。

Ja va Stream API数值统计:SummaryStatistics应用

先看最常用也最典型的 IntSummaryStatistics。处理 int 类型时,它轻量、线程安全(可以调用 accept()combine() 动态累加),所有字段直接可用:

  • getCount():元素个数(long 类型)
  • getSum():总和(int
  • getMin() / getMax():极值(空流时默认是 Integer.MAX_VALUE / Integer.MIN_VALUE,边界情况要留意)
  • getA verage():自动计算的平均值(double,空流返回 0.0

用法很简单:先用 mapToInt() 转成数值流,再调用 summaryStatistics()

List scores = Arrays.asList(85, 92, 78, 96, 88);
IntSummaryStatistics stats = scores.stream()
    .mapToInt(Integer::intValue)
    .summaryStatistics();
System.out.println("共 " + stats.getCount() + " 人,最高 " + stats.getMax()
                  + ",最低 " + stats.getMin() + ",平均 " + String.format("%.2f", stats.getA verage()));
// 输出:共 5 人,最高 96,最低 78,平均 87.80

DoubleSummaryStatistics 和 LongSummaryStatistics 同理

对应 doublelong 类型,API 完全一致,只是返回值类型匹配:

  • DoubleSummaryStatistics:适用于浮点运算、带小数的指标(比如响应时间、评分)
  • LongSummaryStatistics:适合大整数统计,比如用户ID计数、金额累计(避免 int 溢出)

不过要注意:DoubleSummaryStatisticsgetMin()/getMax()NaN 和无穷值有特殊处理逻辑,实际使用中最好提前过滤掉异常值。

结合 groupingBy 实现分组汇总

如果想像按类别分别看统计?把 SummaryStatistics 当作聚合器,传给 Collectors.collectingAndThen 或直接嵌套在 groupingBy 里:

Map regionStats = users.stream()
    .collect(Collectors.groupingBy(
        User::getRegion,
        Collectors.summarizingInt(User::getScore)
    ));

结果是一个 Map<地区, IntSummaryStatistics>,每个地区都自带五维统计。遍历时直接调用 stats.getA verage() 等方法就行,不用自己手动算均值或找极值。

空流与异常值要主动兜底

SummaryStatistics 对空流是友好的——getA verage() 返回 0.0getMin() 等返回极端值。不过业务上往往需要明确语义:

  • 如果空结果应该报错或跳过,可以在调用前加 if (list.isEmpty()) throw …
  • 如果数据里含有负数或异常值(比如 -1 表示“未填写”),建议先 filter(x -> x > 0) 再统计
  • 平均值保留小数位,推荐用 String.format("%.2f", stats.getA verage()),不必用 BigDecimal 过度复杂化
本文转载于:https://www.php.cn/faq/2694543.html 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。

热门关注