1. 引言
本文将介绍两种计算Java数组元素总和与平均值的方法:传统循环和Stream API。无论你是处理一维数组还是二维数组,都能找到简单粗暴的解决方案。
2. 计算数组元素总和
2.1 使用for循环求和
最直接的方式就是遍历数组累加元素值。初始化一个sum变量为0,然后逐个累加数组元素:
public static int findSumWithoutUsingStream(int[] array) {
int sum = 0;
for (int value : array) {
sum += value;
}
return sum;
}
2.2 使用Java Stream API求和
Stream API提供了更简洁的实现方式:
public static int findSumUsingStream(int[] array) {
return Arrays.stream(array).sum();
}
⚠️ 注意:sum()
方法仅适用于基本类型流。如果处理的是Integer
对象数组,需要先转换为IntStream
:
public static int findSumUsingStream(Integer[] array) {
return Arrays.stream(array)
.mapToInt(Integer::intValue)
.sum();
}
想深入了解Stream API?可以参考这篇教程。
3. 计算数组平均值
3.1 不使用Stream API
既然已经会求和,计算平均值就很简单了:平均值 = 元素总和 / 元素数量
public static double findAverageWithoutUsingStream(int[] array) {
int sum = findSumWithoutUsingStream(array);
return (double) sum / array.length;
}
✅ 关键点:
- 整数相除会丢失精度,必须先将
sum
转换为double
- 数组长度通过
length
属性获取
3.2 使用Stream API
Stream API提供了直接计算平均值的方法:
public static double findAverageUsingStream(int[] array) {
return Arrays.stream(array).average().orElse(Double.NaN);
}
⚠️ average()
返回OptionalDouble
,需要处理空值情况。关于Optional
的更多细节可以参考这篇文章。
4. 计算二维数组的平均值
二维数组的平均值计算逻辑类似:所有元素总和 / 元素总数
4.1 不使用Stream API
通过嵌套循环遍历所有元素:
public static double findAverageWithoutUsingStream(int[][] array) {
int sum = 0;
int count = 0;
for (int[] row : array) {
for (int value : row) {
sum += value;
count++;
}
}
return (double) sum / count;
}
4.2 使用Stream API
Stream API处理二维数组更优雅:
public static OptionalDouble findAverageUsingStream(int[][] array) {
return Arrays.stream(array)
.flatMapToInt(Arrays::stream)
.average();
}
✅ 处理流程:
- 将二维数组转换为流(
Arrays.stream(array)
) - 使用
flatMapToInt
扁平化为IntStream
- 直接调用
average()
方法
5. 总结
本文展示了计算Java数组总和与平均值的多种实现方式:
- 传统循环:直观易懂,适合简单场景
- Stream API:代码简洁,适合复杂操作
完整代码示例可在GitHub获取。