成都专业建站公司新网站百度多久收录
Java8 使用stream().filter()过滤List(查找符合条件的对象集合)
在Java8及以上版本中, 使用stream().filter()来过滤一个List对象,查找符合条件的对象集合。
代码实现
1.对象类 Teacher
import java.time.LocalDate;
import java.util.List;/*** @author qzz*/
public class Teacher{/*** 姓名*/private String name;/*** 年龄*/private Integer age;/*** true:男 false:女*/private Boolean gender;/*** 身高*/private Double height;/*** 身高*/private LocalDate birthday;public String getName() {return name;}public void setName(String name) {this.name = name;}public Integer getAge() {return age;}public void setAge(Integer age) {this.age = age;}public Boolean getGender() {return gender;}public void setGender(Boolean gender) {this.gender = gender;}public Double getHeight() {return height;}public void setHeight(Double height) {this.height = height;}public LocalDate getBirthday() {return birthday;}public void setBirthday(LocalDate birthday) {this.birthday = birthday;}public Teacher(String name,Boolean gender,Integer age,Double height,LocalDate birthday){this.name = name;this.gender = gender;this.age = age;this.height = height;this.birthday = birthday;}@Overridepublic String toString() {String str=String.format("%s\t\t%s\t\t%s\t\t%s\t\t%s",this.name,this.gender.toString(),this.age.toString(),this.height.toString(),this.birthday.toString());return str;}public static void printTeachers(List<Teacher> list){System.out.println("[姓名]\t\t[性别]\t\t[年龄]\t\t[身高]\t\t[生日]");System.out.println("------------------------------------------");list.forEach(t-> System.out.println(t.toString()));System.out.println(" ");}
}
2.创建类ListFilter,测试实现list过滤效果
2.1添加测试数据
//1.构建测试数据List<Teacher> list = new ArrayList<>();list.add(new Teacher("张三",true,26,1.76, LocalDate.of(1996,1,18)));list.add(new Teacher("小莉",false,21,1.61, LocalDate.of(2001,1,18)));list.add(new Teacher("李四",true,22,1.82, LocalDate.of(2000,1,18)));list.add(new Teacher("程曦",false,20,1.64, LocalDate.of(2002,1,18)));
2.2输出Teachers列表
//2.输出list列表Teacher.printTeachers(list);
2.3使用filter()过滤List
//3.使用filter()过滤list//查找身高在1.8米及以上的男生List<Teacher> teacherList = list.stream().filter(teacher -> teacher.getGender()&& teacher.getHeight() >= 1.8).collect(Collectors.toList());//4.输出查找结果Teacher.printTeachers(teacherList);//查找年龄在20以上的女List<Teacher> tList = list.stream().filter(teacher -> !teacher.getGender()&& teacher.getAge() >= 20).collect(Collectors.toList());//输出查找结果Teacher.printTeachers(tList);
2.4完整代码
import java.time.LocalDate;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;/*** Java8 使用 stream().filter()过滤List对象(查找符合条件的对象集合)* @author qzz*/
public class ListFilter {public static void main(String[] args) {//1.构建测试数据List<Teacher> list = new ArrayList<>();list.add(new Teacher("张三",true,26,1.76, LocalDate.of(1996,1,18)));list.add(new Teacher("小莉",false,21,1.61, LocalDate.of(2001,1,18)));list.add(new Teacher("李四",true,22,1.82, LocalDate.of(2000,1,18)));list.add(new Teacher("程曦",false,20,1.64, LocalDate.of(2002,1,18)));//2.输出list列表Teacher.printTeachers(list);//3.使用filter()过滤list//查找身高在1.8米及以上的男生List<Teacher> teacherList = list.stream().filter(teacher -> teacher.getGender()&& teacher.getHeight() >= 1.8).collect(Collectors.toList());//4.输出查找结果Teacher.printTeachers(teacherList);//查找年龄在20以上的女List<Teacher> tList = list.stream().filter(teacher -> !teacher.getGender()&& teacher.getAge() >= 20).collect(Collectors.toList());//输出查找结果Teacher.printTeachers(tList);}
}
运行结果: