(See the next iteration.)
I have this funky class method for computing standard deviation from an array of Number
objects using the Stream API:
StandardDeviation.java:
package net.coderodde.util;
import java.util.Arrays;
public class StandardDeviation {
public static double computeStandardDeviation(Number... collection) {
if (collection.length == 0) {
return Double.NaN;
}
final double average =
Arrays.stream(collection)
.mapToDouble((x) -> x.doubleValue())
.summaryStatistics()
.getAverage();
final double rawSum =
Arrays.stream(collection)
.mapToDouble((x) -> Math.pow(x.doubleValue() - average,
2.0))
.sum();
return Math.sqrt(rawSum / (collection.length - 1));
}
public static void main(String[] args) {
// Mix 'em all!
double sd = computeStandardDeviation((byte) 1,
(short) 2,
3,
4L,
5.0f,
6.0);
System.out.println(sd);
}
}
Please, tell me anything that comes to mind.