我有一个double值数组。我想计算该数组中所有值的最大值和平均值。
目前我只是通过数组迭代并计算数字,一切正常。但我觉得很奇怪,我必须实现这样一个基本方法。我正在寻找Java API,如果有一种方法可以做类似的事情,但我找不到任何......我错过了什么?
我在这里搜索过,但我只找到了一些例子,他们以与我相同的方式实现它。
答案 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/