文章目录
流式处理简介
java8,即jdk1.8,中新增的内容,一般情况下,对一个集合中的所有元素操作,经常使用循环遍历的方法,比如,现在有Student类如下:
@Getter
@Setter
public class Student {
private int number;
private int age;
private int grade;
private String name;
public static Student newRandomStudent(){
Student student=new Student();
student.setNumber(CommonUtil.generateSpecificNumbers(6));
student.setAge(CommonUtil.generateSpecificNumbers(1));
student.setGrade(CommonUtil.generateSpecificNumbers(0));
student.setName(CommonUtil.generateSpecificString(5));
return student;
}
}
该类有几个基础数据类型的成员变量,和一个静态方法用于生成一个随机实例,同时有List list,为了得到list中所有age为偶数的学学生列表可以使用如下传统的循环遍历方法:
public List<Student> getAstudentListWhoseAgeIsOushu(List<Student> list) {
List<Student> result = new ArrayList<>();
if (list == null) {
return result;
}
for (Student everyStudent : list) {
if (everyStudent.getAge() % 2 == 0) {
result.add(everyStudent);
}
}
return result;
}
而在java8中的利用流处理的特性,可以使用如下方法处理:
public List<Student> getAstudentListWhoseAgeIs_Oushu_2(List<Student> list) {
List<Student> result = new ArrayList<>();
result = list.stream() //集合转换为Stream类,能转换的还有数组、文件
.filter(entry -> entry.getAge() % 2 == 0) //中间操作,Stream的实例方法,函数式写法,还有其余多种中间操作
.collect(Collectors.toList()); //终端操作,对中间操作产生的新Stream的后续处理,本质仍然是Stream的实例方法,
//只要是Stream的实例方法,都可以直接往后接;可以追加多个Stream方法进行处理
return r