Contents

Java数组中总和和平均

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;
}

备注

  1. 将一个int除以另一个int返回一个int结果。为了获得准确的平均值,我们首先将sum转换为double
  2. 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类的更多信息。