IntSummaryStatistics 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 doubles use DoubleSummaryStatistics .
Setup class OrderEntry {
int amount ;
public OrderEntry ( int amount ) {
super ();
this . amount = amount ;
}
public int getAmount () {
return amount ;
}
}
List < OrderEntry > orderEntries ;
@Before
public void setUp () {
orderEntries = new ArrayList <>();
orderEntries . add ( new OrderEntry ( 10 ));
orderEntries . add ( new OrderEntry ( 14 ));
orderEntries . add ( new OrderEntry ( 12 ));
orderEntries . add ( new OrderEntry ( 18 ));
}
Java 8 Compute summary statistics on a stream @Test
public void test_methods () {
IntSummaryStatistics stats = orderEntries . stream ()
. mapToInt (( x ) -> x . getAmount ()). summaryStatistics ();
// average
assertEquals ( 13.5 , stats . getAverage (), 0 );
// count
assertEquals ( 4 , stats . getCount (), 0 );
// max
assertEquals ( 18 , stats . getMax (), 0 );
// min
assertEquals ( 10 , stats . getMin (), 0 );
// sum
assertEquals ( 54 , stats . getSum (), 0 );
}
IntSummaryStatistics as a reduction target @Test
public void int_summary_stats_stream_reduction_target () {
IntSummaryStatistics stats = orderEntries . stream (). collect (
Collectors . summarizingInt ( OrderEntry: : getAmount ));
// average
assertEquals ( 13.5 , stats . getAverage (), 0 );
// count
assertEquals ( 4 , stats . getCount (), 0 );
// max
assertEquals ( 18 , stats . getMax (), 0 );
// min
assertEquals ( 10 , stats . getMin (), 0 );
// sum
assertEquals ( 54 , stats . getSum (), 0 );
}
IntSummaryStatistics 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:
IntSummaryStatisticsExample.java