1.Stream计数和求和
我们首先看下计数和求和两个功能
List students = Arrays.asList(
new Student(1L,"nick1", 0, 1, 91.5, 80.0),
new Student(2L,"nick2", 1, 1, 90.0, 85.0),
new Student(3L,"nick3", 0, 1, 81.0, 82.0),
new Student(4L,"nick4", 1, 0, 0.0, 0.0),
new Student(5L,"nick5", 0, 1, 79.0, 92.0));
double sum = students.stream().mapToDouble(Student::getChinese).sum();
long count = students.stream().count();
这个例子中的我们用到了mapToDouble操作,这是一个拆包方法可以提高计算效率。
2.Stream最值的处理
最值的处理分为最值对象和最值
Student max1 = students.stream().max(Comparator.comparing(Student::getChinese,Comparator.reverseOrder())).get();
Double max2 = students1.stream().mapToDouble(Student::getChinese).max().orElseGet(()->0L);
Student min1 = students.stream().max(Comparator.comparing(Student::getChinese,Comparator.reverseOrder())).get();
Double min2 = students1.stream().mapToDouble(Student::getChinese).min().orElseGet(() -> 0L);
3.Stream平均值处理
Double average = students1.stream().mapToDouble(Student::getChinese).average().orElseGet(()->0);