使用JAVA8中的Stream计算集合数值之和的各种方式:
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.atomic.LongAdder;
import java.util.stream.Collectors;
/**
* @author wzx
* @time 2018/9/15
*/
public class SumTest {
public static void main(String[] args) {
List<Integer> list = new ArrayList<>();
list.add(1);
list.add(2);
list.add(3);
//第一种方式:使用stream
int sum = list.stream().mapToInt(x -> x).sum();
System.out.println(sum);
sum = list.stream().mapToInt(Integer::intValue).sum();
System.out.println(sum);
//第二种方式:使用LongAdder
LongAdder longAdder = new LongAdder();
list.parallelStream().forEach(longAdder::add);
sum = longAdder.intValue();
System.out.println(sum);
//第三种方式:使用Collectors.summingInt
sum = list.stream().collect(Collectors.summingInt(Integer::intValue));
System.out.println(sum);
//第四种方式:使用map.reduce
sum = list.stream().mapToInt(i -> i).reduce(0, (x,y) -> x+y);
System.out.println(sum);
}
}