代码优化 List<DeviceDataShow> list = equDeviceService.deviceAllData(deviceDataSearch); TableDataInfo rspData = new TableDataInfo(); rspData.setCode(200); if (CollectionUtils.isEmpty(list)) { rspData.setRows(new ArrayList<>()); }else{ int start = (deviceDataSearch.getPageNum() - 1) * deviceDataSearch.getPageSize(); if (list.size() >= (deviceDataSearch.getPageNum() * deviceDataSearch.getPageSize())) { rspData.setRows(list.subList(start, deviceDataSearch.getPageSize())); } else { rspData.setRows(list.subList(start,list.size())); } } rspData.setMsg("查询成功"); rspData.setTotal(list.size());
时间: 2024-02-28 18:52:42 浏览: 53
代码优化方式
首先需要注意的是,该代码使用了分页查询功能,可以有效地减少数据传输的量,提高系统性能。但是,还可以进一步优化该代码:
1. 避免在代码中直接使用魔法数字,如200、1、0等,应该将这些数字定义为常量,提高代码的可读性和可维护性。
2. 在判断List是否为空时,可以使用更加简洁的方式,如`if(list == null || list.isEmpty())`。
3. 在设置返回的列表数据时,可以使用Java 8的Stream API来实现,如:
```java
rspData.setRows(list.stream()
.skip(start)
.limit(deviceDataSearch.getPageSize())
.collect(Collectors.toList()));
```
4. 在获取总记录数时,可以使用list.size()来获取,但是如果数据量非常大时,可能会影响系统性能。因此,可以在查询时,同时返回总记录数,避免再次查询数据库,提高系统性能。
综上所述,优化后的代码如下所示:
```java
List<DeviceDataShow> list = equDeviceService.deviceAllData(deviceDataSearch);
TableDataInfo rspData = new TableDataInfo();
rspData.setCode(HttpServletResponse.SC_OK);
if (list == null || list.isEmpty()) {
rspData.setRows(Collections.emptyList());
} else {
int start = (deviceDataSearch.getPageNum() - 1) * deviceDataSearch.getPageSize();
rspData.setRows(list.stream()
.skip(start)
.limit(deviceDataSearch.getPageSize())
.collect(Collectors.toList()));
}
rspData.setMsg("查询成功");
rspData.setTotal(list.size());
```
阅读全文