for(int i=0;i<weekNum;i++){ Date monday = DateUtils.addDays(startDate,i*7); Date sunday = DateUtils.addDays(monday,6); exceptUsers = weeklyService.queryUserWithSummary(monday,sunday); if(!CollectionUtils.isEmpty(exceptUsers)){ hasSummaryUsers.addAll(exceptUsers); } }如何优化这段代码
时间: 2024-02-14 09:04:54 浏览: 67
一个用来计算整星期日期的功能代码
这段代码可以进行两方面的优化:
1. 减少重复计算
在循环中,每次都通过 `DateUtils.addDays()` 方法计算出周一和周日的日期,这是一种重复计算,可以将其提取出来,只计算一次即可:
```
Date monday = startDate;
for(int i=0;i<weekNum;i++){
Date sunday = DateUtils.addDays(monday,6);
exceptUsers = weeklyService.queryUserWithSummary(monday,sunday);
if(!CollectionUtils.isEmpty(exceptUsers)){
hasSummaryUsers.addAll(exceptUsers);
}
monday = DateUtils.addDays(monday, 7);
}
```
2. 减少数据库查询次数
在循环中,每次都要查询一次数据库,这是一种浪费资源的写法,可以将其优化为一次查询即可:
```
Date monday = startDate;
Date sunday = DateUtils.addDays(monday, 6 * weekNum);
exceptUsers = weeklyService.queryUserWithSummary(monday, sunday);
if(!CollectionUtils.isEmpty(exceptUsers)){
hasSummaryUsers.addAll(exceptUsers);
}
```
这样,只需要一次查询即可得到所有周的数据,大大减少了数据库查询次数。
阅读全文