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值上使用流,我们必须首先使用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数组有一个length字段,用于存储数组中元素的数量。
3.2 使用Java Stream API的平均值
public static double findAverageUsingStream(int[] array) {
return Arrays.stream(array).average().orElse(Double.NaN);
}
IntStream.average()返回一个OptionalDouble,它可能不包含值并且需要特殊处理。
阅读本文中有关Optionals的更多信息以及Java 8文档中有关OptionalDouble类的信息。
4。总结
在本文中,我们探讨了如何求出int数组元素的总和/平均值。
与往常一样,本教程的完整源代码可在GitHub上获得。
Show Disqus Comments
Post Directory
扫码关注公众号:Taketoday
发送 290992
即可立即永久解锁本站全部文章