當你的判斷的,在多重循環中的時候,退出循環使用錨點

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章