1.Stream流的map和reduce组合使用
假设当前存在Person类,下述两个Person类的需求都是借助Stream流的map()和reduce()方法
import lombok.AllArgsConstructor;
import lombok.Data;
@Data
@AllArgsConstructor
public class Person {
private String name;
private int age;
}
第一个需求:当前需要求出所有年龄的总和
import java.util.stream.Stream;
public class Demo {
public static void main(String[] args) {
//求出所有年龄的总和
Integer totalAge = Stream.of(
new Person("刘德华",58),
new Person("张学友",56),
new Person("郭富城",54),
new Person("黎明",52))
.map(p -> p.getAge())
.reduce(0,(x,y)->{
return x+y;
});
System.out.println(totalAge);
}
}
上述关于求和部分的代码还可以采用方法引用的方式进一步精简:
Integer totalAge = Stream.of(
new Person("刘德华",58),
new Person("张学友",56),
new Person("郭富城",54),
new Person("黎明",52))
.map(p -> p.getAge())
.reduce(0,Integer::sum);
第二个需求:找出最大的年龄