33333
需求:
一键创建一个报表, 报表包含多个数据库表的内容
就会使用到多个 for 循环的内容
所以, 就要在一些不符合条件的 for 循环上加上判断, 当不符合时 , 最外面的 for 循环也不在执行
List<DeptProject> deptProjects = deptProjectMapper.selectList(wrapper);
if (null == deptProjects || deptProjects.isEmpty()) {
for (Dept dept : deptList) {
DeptProject deptProject = new DeptProject();
// 设置判断这个部门是否有负责人的锚点
boolean b = false;
deptProject.setName(year.getCode() + "年度" + dept.getName() + "一页纸报表");
deptProject.setDeptId(dept.getId());
deptProject.setYearId(year.getId());
Set<User> users = userRoleMapper.findUsersBydeptIdAndRoleId(dept.getId(), role.getId());
if (null != users) {
for (User user : users) {
if (dept.getId().equals(user.getDeptId())){
deptProject.setDeptHeadId(user.getId());
b = true;
} else {
b = false;
continue;
}
//deptProject.setDeptHeadId(user.getId());
}
}
if (!b){
continue;
}
deptProject.setCreatedUserId(currentUser.getId());
当我的那个条件 b 使用的使用的时候 , 初始化为 false , 当从新开始一个循环的时候也是 false ,
在内层 for 循环的时候给定一个判断的条件 , 如果成功的时候就是使用为 true 就可以, 继续下面的循环结构的添加.
在内层循环的时候, 条件为 不成立 则 置为 false , 使用 continue 退出这次内层循环, 同样的将 锚点的状态置为 false , 那么在下面判断的时候, 就是通过的, 那么就会 退出这次的外层循环.
-----------------------------------------------------我是万恶的分割线-----------------------------------------------------
附加, continue; , break; , return;
三者的区别问题:
continue 是 跳过这个条件的循环, 进行下一个循环 (影响 小)
break 是 退出这次的 循环体 , 终止剩余的全部循环 (影响 中)
return 是 退出循环体, 返回这个方法的结果, 到类 (影响 大)
参考文档 = https://zhidao.baidu.com/question/175639895692192164.html