接上一篇:https://blog.csdn.net/qq_37855749/article/details/113937502
public class StreamLearn2 {
private static List<Student> list;
static {
list = new ArrayList<>();
list.add(new Student(1, "小明", 18, 85L));
list.add(new Student(2, "张三", 19, 81L));
list.add(new Student(3, "李四", 20, 79L));
list.add(new Student(4, "王二", 15, 90L));
list.add(new Student(4, "王三", 18, 90L));
}
public static void main(String[] args) {
//需求7: 挑选出得分最高/最低的学生名 (max、min)
Optional<Student> max = list.stream().max((student1, student2) -> (int) (student1.getScore() - student2.getScore()));
System.out.println(max.orElse(null));
Optional<Student> min = list.stream().min((student1, student2) -> (int) (student1.getScore() - student2.getScore()));
System.out.println(min.orElse(null));
//需求8: 遍历(forEach、peek)
// 遍历既可以用forEach、也可以用peek,作用相似,都是接受一个消费型的函数接口
list.stream().peek(System.out::println).forEach(System.out::println);
//需求9:随便来一个90分及以上的
Optional<Student> any = list.stream().filter(student -> student.getScore() >= 90L).findAny();
System.out.println(any.orElse(null));
}
}
@Data
@AllArgsConstructor
@NoArgsConstructor
class Student{
private Integer id;
private String name;
private Integer age;
private Long score;
}