DoubleSummaryStatistics is an object for collecting statistics such as count, min, max, sum, and average. Although not required, it is designed to work with streams. If you are working with longs use LongSummaryStatistics or ints use IntSummaryStatistics .
Setup class Company {
double revenue ;
public Company ( double revenue ) {
super ();
this . revenue = revenue ;
}
public double getRevenue () {
return revenue ;
}
}
List < Company > companies ;
@Before
public void setUp () {
companies = new ArrayList <>();
companies . add ( new Company ( 100.12 ));
companies . add ( new Company ( 142.65 ));
companies . add ( new Company ( 12.1 ));
companies . add ( new Company ( 184.90 ));
}
Java 8 Compute summary statistics on a stream @Test
public void double_summary_stats_with_stream () {
DoubleSummaryStatistics stats = companies . stream ()
. mapToDouble (( x ) -> x . getRevenue ()). summaryStatistics ();
// average
assertEquals ( 109.9425 , stats . getAverage (), 0 );
// count
assertEquals ( 4 , stats . getCount (), 0 );
// max
assertEquals ( 184.9 , stats . getMax (), 0 );
// min
assertEquals ( 12.1 , stats . getMin (), 0 );
// sum
assertEquals ( 439.77 , stats . getSum (), 0 );
}
DoubleSummaryStatistics as a reduction target @Test
public void double_summary_stats_stream_reduction_target () {
DoubleSummaryStatistics stats = companies . stream (). collect (
Collectors . summarizingDouble ( Company: : getRevenue ));
// average
assertEquals ( 109.9425 , stats . getAverage (), 0 );
// count
assertEquals ( 4 , stats . getCount (), 0 );
// max
assertEquals ( 184.9 , stats . getMax (), 0 );
// min
assertEquals ( 12.1 , stats . getMin (), 0 );
// sum
assertEquals ( 439.77 , stats . getSum (), 0 );
}
DoubleSummaryStatistics Example posted by Justin Musgrove on 15 February 2014
Tagged: java and java-util
Share on: Facebook Google+
All the code on this page is available on github:
DoubleSummaryStatisticsExample.java