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