Java配列で合計と平均を見つける
1. 序章
このクイックチュートリアルでは、Java標準ループとストリーム 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. JavaStreamAPIを使用した合計
同じ結果を達成するためにStreamAPIを使用できます。
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();
}
StreamAPIの詳細についてはこちらをご覧ください。
3. Java配列で平均を見つける
3.1. StreamAPIなしの平均
配列要素の合計を計算する方法がわかれば、平均を見つけるのは非常に簡単です。平均=要素の合計/要素の数のように:
public static double findAverageWithoutUsingStream(int[] array) {
int sum = findSumWithoutUsingStream(array);
return (double) sum / array.length;
}
メモ:
- intを別のintで割ると、intの結果が返されます。 正確な平均を取得するために、最初に合計を2倍にキャストします。
- Java Array には、配列内の要素の数を格納するlengthフィールドがあります。
3.2. JavaStreamAPIを使用した平均
public static double findAverageUsingStream(int[] array) {
return Arrays.stream(array).average().orElse(Double.NaN);
}
IntStream.average()は、値を含まない可能性があり、特別な処理が必要なOptionalDoubleを返します。
thisの記事のOptionalsと、 Java 8DocumentationのOptionalDoubleクラスの詳細をお読みください。
4. 結論
この記事では、int配列要素の合計/平均を見つける方法について説明しました。
いつものように、コードはGithubでから入手できます。