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

如何使用类库工具对Java ArrayList元素执行简单统计运算

解决方案

方法1:JDK 8+ 内置Stream API(无额外依赖,推荐)

JDK自带的Stream API可以直接实现统计需求,无需手写循环,也不需要引入第三方包。

一次性获取全部统计指标(最高效,仅需一次遍历)

使用IntSummaryStatistics可以一次拿到最大值、最小值、平均值、总和、元素数量五个核心指标:

import java.util.IntSummaryStatistics;
import java.util.stream.Collectors;

// 统计heightInCm字段的所有指标
IntSummaryStatistics heightStatistics = persons.stream()
        .collect(Collectors.summarizingInt(Person::getHeightInCm));

获取各指标的方式:

  • 平均值:heightStatistics.getAverage(),返回double类型
  • 最大值:heightStatistics.getMax(),返回int类型
  • 最小值:heightStatistics.getMin(),返回int类型
  • 字段值总和:heightStatistics.getSum(),返回long类型
  • 参与统计的元素总数:heightStatistics.getCount(),返回long类型

单独获取单个指标

如果只需要某一个指标,也可以单独调用对应方法:

// 求heightInCm平均值,列表为空时默认返回0.0
double avgHeight = persons.stream()
        .mapToInt(Person::getHeightInCm)
        .average()
        .orElse(0.0);

// 求heightInCm最大值,列表为空时默认返回0
int maxHeight = persons.stream()
        .mapToInt(Person::getHeightInCm)
        .max()
        .orElse(0);

// 求heightInCm最小值,列表为空时默认返回0
int minHeight = persons.stream()
        .mapToInt(Person::getHeightInCm)
        .min()
        .orElse(0);

注意:如果persons是空列表,average()、max()、min()都会返回空的OptionalInt对象,调用orElse()设置默认值可以避免空指针异常。

方法2:第三方工具类(适合已引入对应依赖的项目)

如果你的项目已经引入了Guava、Apache Commons Lang等工具库,也可以用对应封装的统计工具,比如Guava的Stats类:

import com.google.common.math.Stats;

double avgHeight = Stats.of(persons.stream().mapToInt(Person::getHeightInCm)).mean();
int maxHeight = Stats.of(persons.stream().mapToInt(Person::getHeightInCm)).max();

内容的提问来源于stack exchange,提问作者Jonathan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 20:54:07