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

本文介绍了如何利用JDK1.8的stream().filter方法优化处理500行Excel数据的过程,以解决传统循环导致的效率低下和超时问题。

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

使用stream().filter快速循环

最开始导入Excel的内容

for(int rowNum=1;rowNum<=sheet.getLastRowNum();rowNum++){
//查询内容......
period= periodMapper.selectPeriodByNames(args);
//再次查询内容....
userBind = userBindService.selectUserBindByIdcardNo(orderNumber);
}

导入一份500行的Excel,每个查询都要走500多次,上传文件慢就不说了,还容易出现超时的问题,使用stream().filter 优化代码

//在循环外一次性查询所有内容
List<ExamScore> scoreList=examScoreMapper.selectExamScoreByUser();
//查询.....
List<Certificate> cerList=certificateMapper.selectCertificateByUser();
for(int rowNum=1;rowNum<=sheet.getLastRowNum();rowNum++){
//循环内直接取值,不需要每次查数据库(i.getOrderNum代表要查的字段,id代表传入的值)
List<PeriodUserVo> list=scoreList.stream().filter(i->i.getOrderNum().equals(id)).collect(Collectors.toList());
//取第一条
User user=list.get(0);
}



其他用法:
//在集合中查询用户名为huxiansen的集合
List<User> userList = list.stream().filter(user -> "huxiansen".equals(user.getUsername())).collect(Collectors.toList());
//在集合中查询出第一个用户密码为123456的用户
 Optional<User> user = list.stream().filter(userTemp -> "123456".equals(userTemp.getPassword())).findFirst();

必须要JDK1.8以上才能使用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值