Java数组中总和和平均
Contents
1. 简介
在这个快速教程中,我们将介绍如何使用 Java 标准循环和Stream API 计算数组中的总和和平均值。
2. 求数组元素之和
2.1. 使用For循环求和
为了找到数组中所有元素的总和,我们可以简单地迭代数组并将每个元素添加到总和累加变量中。
这非常简单地从sum0 开始,然后将每个项目添加到数组中:
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值上使用流,我们必须首先使用mapToInt方法将流转换为IntStream。
之后,我们可以将sum()方法应用于我们新转换的IntStream:
public static int findSumUsingStream(Integer[] array) {
return Arrays.stream(array)
.mapToInt(Integer::intValue)
.sum();
}
您可以在此处 阅读有关 Stream API 的更多信息。
3. 在 Java 数组中求平均值
3.1. 没有 Stream API 的平均值
一旦我们知道如何计算数组元素的总和,找到平均值就很容易了——因为平均值 = 元素总和 / 元素数:
public static double findAverageWithoutUsingStream(int[] array) {
int sum = findSumWithoutUsingStream(array);
return (double) sum / array.length;
}
备注:
- 将一个int除以另一个int返回一个int结果。为了获得准确的平均值,我们首先将sum转换为double。
- Java Array有一个length字段,用于存储数组中元素的数量。
3.2. 平均使用 Java Stream API
public static double findAverageUsingStream(int[] array) {
return Arrays.stream(array).average().orElse(Double.NaN);
}
IntStream.average()返回一个OptionalDouble,它可能不包含值并且需要特殊处理。
在本文 中阅读有关Optional的更多信息,并在Java 8 文档中阅读有关 OptionalDouble类的更多信息。