优化下面的代码List<TaskGroup> taskGroups = taskGroupMapper.selectTaskGroupByParam(taskGroupRelationDTO); List<TaskGroupListDTO> list = new ArrayList<>(); for (TaskGroup taskGroup : taskGroups) { TaskGroupListDTO taskGroupListDTO = new TaskGroupListDTO(); List<TaskGroupRelation> taskGroupRelations = taskGroupRelationMapper.selectGroupRelationIdsByGroupId(taskGroup.getGroupId()); if (taskGroup.getTaskValidTime() != null && taskGroup.getTaskInvalidTime() != null) { taskGroupListDTO.setStatus(getTaskGroupStatus(taskGroup.getTaskValidTime(), taskGroup.getTaskInvalidTime())); } //编码 taskGroupListDTO.setGroupCode(taskGroup.getCode()); taskGroupListDTO.setTaskName(taskGroup.getName()); taskGroupListDTO.setType(taskGroupRelations.get(0).getType()); taskGroupListDTO.setCreateTime(taskGroup.getCreateTime()); taskGroupListDTO.setTaskValidTime(taskGroup.getTaskValidTime()); taskGroupListDTO.setTaskInvalidTime(taskGroup.getTaskInvalidTime()); taskGroupListDTO.setTaskState(taskGroup.getTaskState()); taskGroupListDTO.setCreateUserName(taskGroup.getCreateUserName()); String appCode = StringUtils.join(taskGroupRelations.stream().map(TaskGroupRelation::getAppCode).collect(Collectors.toList()),","); taskGroupListDTO.setAppCode(appCode); list.add(taskGroupListDTO); }
时间: 2023-02-06 18:16:50 浏览: 182
这段代码主要是通过调用 `taskGroupMapper.selectTaskGroupByParam` 方法来查询任务组信息,然后遍历查询结果,对于每个任务组,通过调用 `taskGroupRelationMapper.selectGroupRelationIdsByGroupId` 方法来查询关联的任务信息。然后将查询到的任务组信息和关联的任务信息封装到 `TaskGroupListDTO` 对象中,并将该对象添加到 `list` 列表中。
如果要优化该代码,可以考虑将两次数据库查询合并为一次查询,这样可以减少不必要的数据库访问次数,提高程序的执行效率。
另外,可以使用 `Java 8` 中的 `Stream` API 来优化循环遍历的部分,这样可以简化代码并提高程序的可读性。
例如,可以将代码改写为如下形式:
```
List<TaskGroupListDTO> list = taskGroups.stream()
.map(taskGroup -> {
TaskGroupListDTO taskGroupListDTO = new TaskGroupListDTO();
List<TaskGroupRelation> taskGroupRelations = taskGroupRelationMapper.selectGroupRelationIdsByGroupId(taskGroup.getGroupId());
// 将任务组信息和关联的任务信息封装到 taskGroupListDTO 对象中
// ……
return taskGroupListDTO;
})
.collect(Collectors.toList());
```
阅读全文