package com.levelup.java.util; import static org.junit.Assert.assertEquals; import java.util.ArrayList; import java.util.DoubleSummaryStatistics; import java.util.List; import java.util.stream.Collectors; import org.junit.Before; import org.junit.Test; /** * This java example will demonstrate how to use * DoubleSummaryStatistics. * * @author Justin Musgrove * @see <a href='http://www.leveluplunch.com/java/examples/doublesummarystatistics-example/'>DoubleSummaryStatistics example</a> */ public class DoubleSummaryStatisticsExample { 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)); } @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); } @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); } }