1.はじめに

このクイックチュートリアルでは、合計を計算する方法について説明します。

2.配列要素の合計を求める

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

**

配列内のすべての要素の合計を求めるには、単純に配列を反復して各要素を

sum

accumulating ____変数に追加します。

これは非常に単純に

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

に変換する必要があります。

その後、新しく変換した

IntStream



sum()

メソッドを適用できます。

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

Stream APIリンクについての詳細は、/java-8-streamsを参照してください。

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

にキャストします。
。 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

を返します。


Optionals

の詳細については、/java-optional[this]の記事およびhttps://docs.oracle.com/javase/8/docs/api/java/util/OptionalDouble.html#orElse-の

OptionalDouble

クラスに関する記事を参照してください。 double – [Java 8 Documentation]

4.まとめ

この記事では、

int

配列要素の合計/平均を求める方法を調べました。

いつものように、コードはhttps://github.com/eugenp/tutorials/tree/master/core-java-arrays[over on Github]から入手できます。