2

整数 ArrayList の平均を計算する組み込みメソッドはありますか?

そうでない場合、ArrayList の名前を取得してその平均値を返す関数を作成できますか?

4

5 に答える 5

9

それは本当に簡単です:

// Better use a `List`. It is more generic and it also receives an `ArrayList`.
public static double average(List<Integer> list) {
    // 'average' is undefined if there are no elements in the list.
    if (list == null || list.isEmpty())
        return 0.0;
    // Calculate the summation of the elements in the list
    long sum = 0;
    int n = list.size();
    // Iterating manually is faster than using an enhanced for loop.
    for (int i = 0; i < n; i++)
        sum += list.get(i);
    // We don't want to perform an integer division, so the cast is mandatory.
    return ((double) sum) / n;
}

さらにパフォーマンスを向上させるには、int[]の代わりにを使用してArrayList<Integer>ください。

于 2012-05-05T21:09:58.147 に答える
2

JDK 8でラムダ式とメソッド参照を使用して間もなく登場:

DoubleOperator summation = (a, b) -> a + b;
double average = data.mapReduce(Double::valueOf, 0.0,  summation) / data.size();
System.out.println("Avergage : " + average);
于 2012-05-05T22:05:03.687 に答える
2

平均よりも 1 つ遅く計算したい場合は、CERN で開発されたColtライブラリをお勧めします。このライブラリは、多くの統計関数をサポートしています。BinFunctions1DおよびDoubleMatrix1Dを参照してください。(最近のコードベースの) 代替手段はcommons-mathかもしれません:

DescriptiveStatistics stats = new DescriptiveStatistics();
for( int i = 0; i < inputArray.length; i++)
{
    stats.addValue(inputArray[i]);
}
double mean = stats.getMean();
于 2012-05-05T21:15:15.333 に答える
1

いいえ、ありません。完全なリストを繰り返し処理してすべての数値を加算し、その合計を配列リストの長さで割ることができます。

于 2012-05-05T21:09:30.377 に答える
0

Apache Commonsライブラリの「平均」を使用できます。

于 2012-05-05T21:15:57.253 に答える