Stream reduce聚合计算方法
- 通常于map搭配使用 map 提取需要统计的数据
- reduce聚合计算方法 进行统计
代码示例:
public class Lambda14 {
public static void main(String[] args) {
List<Student> students = Arrays.asList(new Student("张三", 18),
new Student("李四", 19),
new Student("王五", 21),
new Student("赵六", 22));
/**
* 内部类实现stream reduce
*/
Integer sumAge = students.stream().map(stu -> stu.getAge()).reduce(new BinaryOperator<Integer>() {
@Override
public Integer apply(Integer i1, Integer i2) {
System.out.println("i1:" + i1 + ",i2:" + i2);
return i1 + i2;
}
}).get();
System.out.println("内部类实现stream reduce");
System.out.println(sumAge);
/**
* Lambda实现stream reduce
*/
System.out.println("Lambda实现stream reduce");
Integer sumAgelambda = students.stream().map(Student::getAge).reduce((i1, i2) -> i1 + i2).get();
System.out.println(sumAgelambda);
}
}
class Student {
private String name;
private Integer age;
public Student(String name, Integer age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}
输出:
内部类实现stream reduce
i1:18,i2:19
i1:37,i2:21
i1:58,i2:22
80
Lambda实现stream reduce
80