package com.levelup.java.collections;
import static org.junit.Assert.assertEquals;
import java.util.ArrayList;
import java.util.List;
import org.apache.commons.lang3.ArrayUtils;
import org.apache.commons.math3.stat.StatUtils;
import org.junit.Before;
import org.junit.Test;
/**
* This java example will demonstrate how to
* sum values in a list.
*
* @author Justin Musgrove
* @see <a href='http://www.leveluplunch.com/java/examples/sum-values-in-arraylist/'>Sum values in list</a>
*/
public class SumValueInList {
private static List<Double> NUMBERS_FOR_SUM;
@Before
public void setup () {
NUMBERS_FOR_SUM = new ArrayList<Double>();
NUMBERS_FOR_SUM.add(new Double(10));
NUMBERS_FOR_SUM.add(new Double(10));
NUMBERS_FOR_SUM.add(new Double(10));
NUMBERS_FOR_SUM.add(new Double(10));
NUMBERS_FOR_SUM.add(new Double(10));
NUMBERS_FOR_SUM.add(new Double(10));
NUMBERS_FOR_SUM.add(new Double(10));
NUMBERS_FOR_SUM.add(new Double(10));
NUMBERS_FOR_SUM.add(new Double(10));
NUMBERS_FOR_SUM.add(new Double(10));
}
@Test
public void sum_values_in_list_java () {
Double sum = new Double(0);
for (Double i : NUMBERS_FOR_SUM) {
sum = sum + i;
}
assertEquals(100, sum, 0);
}
@Test
public void sum_values_in_list_java_8() {
double sum = NUMBERS_FOR_SUM.stream().reduce(0d, (a, b) -> a + b);
assertEquals(100, sum, 0);
// or
double sum2 = NUMBERS_FOR_SUM
.stream()
.mapToDouble(Double::doubleValue)
.sum();
assertEquals(100, sum2, 0);
}
@Test
public void sum_values_in_list_apache() {
double[] arrayToSume = ArrayUtils.toPrimitive(NUMBERS_FOR_SUM
.toArray(new Double[NUMBERS_FOR_SUM.size()]));
double sum = StatUtils.sum(arrayToSume);
assertEquals(100, sum, 0);
}
}