Java配列で合計と平均を求める

Java配列で合計と平均を見つける

1. 前書き

このクイックチュートリアルでは、Java標準ループとStream APIの両方を使用して、配列の合計と平均を計算する方法について説明します。

2. 配列要素の合計を見つける

2.1. Forループを使用した合計

配列内のすべての要素の合計を見つけるために、we can simply iterate the array and add each element to a sum accumulating __ variable.

これは非常に単純にsumが0で始まり、配列内の各項目を追加していきます。

public static int findSumWithoutUsingStream(int[] array) {
    int sum = 0;
    for (int value : array) {
        sum += value;
    }
    return sum;
}

2.2. Java StreamAPIとの合計

同じ結果を達成するためにStreamAPIを使用できます。

public static int findSumUsingStream(int[] array) {
    return Arrays.stream(array).sum();
}

sum()メソッドはprimitive type streamsのみをサポートすることを知っておくことが重要です。

ボックス化されたInteger値でストリームを使用する場合は、最初にmapToIntメソッドを使用してストリームをIntStreamに変換する必要があります。

その後、sum()メソッドを新しく変換されたIntStreamに適用できます。

public static int findSumUsingStream(Integer[] array) {
    return Arrays.stream(array)
      .mapToInt(Integer::intValue)
      .sum();
}

Stream APIhereについて詳しく読むことができます。

3. Java配列で平均を見つける

3.1. StreamAPIなしの平均

配列要素の合計を計算する方法がわかれば、平均を見つけるのは非常に簡単です–Average = Sum of Elements / Number of Elementsのように:

public static double findAverageWithoutUsingStream(int[] array) {
    int sum = findSumWithoutUsingStream(array);
    return (double) sum / array.length;
}

Notes

  1. intを別のintで除算すると、intの結果が返されます。 To get an accurate average, we first cast sum to double.

  2. JavaArrayには、配列内の要素の数を格納するlengthフィールドがあります。

3.2. Java StreamAPIを使用した平均

public static double findAverageUsingStream(int[] array) {
    return Arrays.stream(array).average().orElse(Double.NaN);
}

IntStream.average()は、値を含まない可能性があり、特別な処理が必要なOptionalDoubleを返します。

thisの記事のOptionalsJava 8 DocumentationOptionalDoubleクラスの詳細をお読みください。

4. 結論

この記事では、int配列要素の合計/平均を見つける方法について説明しました。

いつものように、コードはover on Githubで利用できます。