Collectors.averagingInt用于计算流中元素映射为整数后的平均值,返回Double类型结果;例如根据用户年龄求平均年龄,代码简洁且自动处理空流返回0.0。

在Java中,Collectors.averagingInt 是 java.util.stream.Collectors 类提供的一个归约操作方法,用于计算流中元素经过整数映射后的平均值。它返回一个 Collector,可以配合 Stream 使用,自动处理空值和类型转换,最终得到一个 double 类型的平均值结果。
averagingInt 方法说明
该方法定义如下:
public static
参数说明:
立即学习“Java免费学习笔记(深入)”;
- mapper:一个函数,用于将流中的每个元素转换为一个 int 值。
- 返回值:一个收集器,用于计算这些 int 值的算术平均值,结果为
Double类型。
基本使用示例
假设有一个用户列表,我们想根据用户的年龄计算平均年龄:
import java.util.*;
import java.util.stream.Collectors;
class User {
private String name;
private int age;
public User(String name, int age) {
this.name = name;
this.age = age;
}
public int getAge() {
return age;
}
}
public class Main {
public static void main(String[] args) {
List users = Arrays.asList(
new User("Alice", 25),
new User("Bob", 30),
new User("Charlie", 35)
);
double averageAge = users.stream()
.collect(Collectors.averagingInt(User::getAge));
System.out.println("平均年龄: " + averageAge); // 输出: 平均年龄: 30.0
}
}
适用场景与注意事项
此方法适用于需要从对象流中提取整数值并求平均的场景。常见用法包括:
- 统计员工工资、学生成绩、商品价格等数值字段的平均值。
- 避免手动遍历集合、累加再除以数量的繁琐操作。
- 若流为空,
averagingInt会返回0.0,需注意是否需要额外判断空流情况。
基本上就这些。使用 Collectors.averagingInt 能让代码更简洁、可读性更强,是 Java 8 Stream 处理数值平均值的推荐方式。










