使用Java8或更高版本,使用stream().filter()来过滤一个List对象,查找符合条件的对象集合。
**例子1:过滤要求,我们需要寻找年龄大于等于15的年轻人。**
List<StudentInfo> lsYoungStudent = lsStudentData.stream().filter(a -> a.getAge() >= 15).collect(Collectors.toList());
例子2:查找身高在1.8米及以上的男生
List<StudentInfo> boys = studentList.stream().filter(s->s.getGender() && s.getHeight() >= 1.8).collect(Collectors.toList());
注:gender为true表示男生,false表示女生
例子3:过滤掉未报工数量未0的数据(即保留有未报工的数据)
List<UnReportMemberRes> checkOnWorksNew = checkOnWorks.stream().filter(UnReportMemberRes -> !"0".equals(UnReportMemberRes.getUnReportDays())).collect(Collectors.toList())
stream().filter()对比stream().sorted()
List<UnReportMemberRes> checkOnWorksSort = checkOnWorksNew .stream().sorted(Comparator.comparing(UnReportMemberRes::getUnReportDays).reversed()).collect(Collectors.toList())
我的想法:在使用stream().sorted()时,可以直接用“UnReportMemberRes::getUnReportDays”来取值,但是使用stream().filter()时,要在前面声明下由“UnReportMemberRes ”变成不为空的UnReportMemberRes 。
streamd的用法详见[Java 8 Stream]:https://www.runoob.com/java/java8-streams.html