从双数组计算统计数据

时间:2014-01-27 18:15:04

标签: java arrays

我有一个double值数组。我想计算该数组中所有值的最大值和平均值。

目前我只是通过数组迭代并计算数字,一切正常。但我觉得很奇怪,我必须实现这样一个基本方法。我正在寻找Java API,如果有一种方法可以做类似的事情,但我找不到任何......我错过了什么?

我在这里搜索过,但我只找到了一些例子,他们以与我相同的方式实现它。

3 个答案:

答案 0 :(得分:3)

您可以使用Apache commons math等库。使用StatUtils,它有一堆有用的静态方法来实现你所需要的。

只需下载库并将其添加到项目依赖项中。

以下是此库的使用示例:

// Just building an array with double values
int size = 10;
double measurements[] = new double[size];

for (int i = 0; i < measurements.length; i++)
{
    measurements[i] = i;
}

// Using the Apache functions
double myAverage = StatUtils.mean (measurements);
double myMax = StatUtils.max (measurements);

答案 1 :(得分:1)

Java 8引入了几个具有统计功能的原始流(double,long,int)。它看起来像:

double[] array = {1, 2, 3, 5, 3};
DoubleSummaryStatistics stats = Arrays.stream(array).summaryStatistics();
System.out.println(stats.getMax());
System.out.println(stats.getAverage());

答案 2 :(得分:0)

您描述的代码非常简单,在大多数情况下,通用库无法提供它,特别是因为很多时候都有各种选项,例如是否还需要min,max,所有这些都是在同一时间完成的。

尽管如此,虽然Java 8引入了一个全新的集合处理API,它可以(在许多其他非常强大的东西中)允许你这样做。

有关详细信息,请参阅:

http://java.dzone.com/articles/java-streams-api-preview

http://zeroturnaround.com/rebellabs/java-8-explained-applying-lambdas-to-java-collections/