使用stream().filter()过滤List对象

本文介绍了如何在Java8及以上版本中利用stream().filter()方法过滤List对象,通过实例展示了如何筛选身高超过1.8米的男生以及过滤掉未报工数量为0的数据。对比了filter()与sorted()的区别,在使用filter()时需要注意对象的非空转换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值