package com.levelup.java.util;
import static org.junit.Assert.assertEquals;
import java.util.ArrayList;
import java.util.IntSummaryStatistics;
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 IntSummaryStatistics.
*
* @author Justin Musgrove
* @see <a href='http://www.leveluplunch.com/java/examples/intsummarystatistics-example/'>IntSummaryStatistics example</a>
*/
public class IntSummaryStatisticsExample {
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));
}
@Test
public void int_summary_stats_with_stream() {
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);
}
@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);
}
}