通過一個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