通过一个demon ,演示 java8 中如何运用 reduce操作。
基础学生类,包含学生的姓名和年龄信息
@Data
@ToString
@NoArgsConstructor
public class Student {
private Integer age;
private String name;
public Student(Integer age, String name) {
this.age = age;
this.name = name;
}
}
初始化 学生 list
List<Student> studentList = Lists.newArrayList ();
studentList.add (new Student (28,"river"));
studentList.add (new Student (12,"lucy"));
studentList.add (new Student (22,"frank"));
studentList.add (new Student (33,"kity"));
通过 reduce 方法来计算 学生的总年龄
先将 学生的 list map 为 年龄的 list ,再计算出年龄的总合
Integer totalAge = studentList.stream().map(Student::getAge).reduce(0,(a,b)->a+b);
System.out.println("totalAge : " + totalAge);
执行结果
totalAge : 95
再来看一个 flatmap 的demon
将多个流压扁,压成一个流
List<String> stringList = Lists.newArrayList("hello world" , "hello frank");
stringList.stream().flatMap(t-> Arrays.stream(t.split(" ")))
.forEach(t-> System.out.println(t));
执行结果
hello
world
hello
frank
网友评论