IntSummaryStatistics是Java 8中java.util包下的一个统计工具类,专门用于对整数类型的数值进行统计计算,能够一次性获取集合中所有整数的最大值、最小值、总和以及平均值,无需多次遍历集合数据,大幅简化了统计相关的代码逻辑。

IntSummaryStatistics核心功能
该类内部维护了统计所需的全部状态,每接收一个整数值就会自动更新对应的统计结果,最终可以输出以下四项核心统计信息:
- 最大值:集合中所有整数的最大值,通过
getMax()方法获取 - 最小值:集合中所有整数的最小值,通过
getMin()方法获取 - 总和:集合中所有整数的累加和,通过
getSum()方法获取 - 平均值:集合中所有整数的算术平均值,通过
getAverage()方法获取
基础使用方式
使用IntSummaryStatistics计算集合统计信息通常有两种常见方式,分别是手动添加数值和配合Stream流使用。
手动添加数值计算
如果需要逐个处理整数数值,可以创建IntSummaryStatistics实例后调用accept()方法传入每个整数,完成所有数值添加后调用对应的获取方法得到统计结果。
import java.util.IntSummaryStatistics;
public class IntStatsDemo {
public static void main(String[] args) {
// 创建IntSummaryStatistics实例
IntSummaryStatistics stats = new IntSummaryStatistics();
// 逐个添加需要统计的整数
stats.accept(12);
stats.accept(45);
stats.accept(7);
stats.accept(89);
stats.accept(33);
// 输出统计结果
System.out.println("最大值:" + stats.getMax());
System.out.println("最小值:" + stats.getMin());
System.out.println("总和:" + stats.getSum());
System.out.println("平均值:" + stats.getAverage());
}
}
配合Stream流使用
在处理整数集合时,更常用的方式是结合Java 8的Stream流,通过mapToInt()方法将集合转换为整数流,再调用summaryStatistics()方法直接得到IntSummaryStatistics实例,代码更加简洁。
import java.util.Arrays;
import java.util.IntSummaryStatistics;
import java.util.List;
public class StreamStatsDemo {
public static void main(String[] args) {
// 创建整数集合
List<Integer> numList = Arrays.asList(15, 28, 9, 67, 42, 31);
// 通过Stream流获取统计实例
IntSummaryStatistics stats = numList.stream()
.mapToInt(Integer::intValue)
.summaryStatistics();
// 输出统计结果
System.out.println("最大值:" + stats.getMax());
System.out.println("最小值:" + stats.getMin());
System.out.println("总和:" + stats.getSum());
System.out.println("平均值:" + stats.getAverage());
// 还可以获取统计的元素个数
System.out.println("元素个数:" + stats.getCount());
}
}
实际应用场景
IntSummaryStatistics适用于所有需要对整数集合进行多维度统计的场景,比如电商系统中统计订单金额的最大、最小、总和与平均金额,学生成绩系统中统计某科成绩的各项统计指标,日志系统中统计接口响应时间的相关数值等。相比手动遍历集合分别计算各项指标,使用该工具类可以减少代码量,同时避免多次遍历集合带来的性能损耗。
注意事项
需要注意如果统计的集合为空,调用getMax()和getMin()方法会返回Integer.MIN_VALUE,调用getAverage()方法会返回0.0,在实际使用时如果需要处理空集合场景,建议先判断集合是否为空或者统计的元素个数是否为0,避免出现不符合预期的结果。
IntSummaryStatistics仅支持int类型的数值统计,如果需要统计long或者double类型的数值,可以分别对应使用LongSummaryStatistics和DoubleSummaryStatistics类,使用方式基本一致。
IntSummaryStatisticsJava统计计算集合处理修改时间:2026-07-06 21:00:24