java 遞迴 設定層級 分級數
阿新 • • 發佈:2018-12-11
//多級角色遞迴查詢方法 public List<ProductCategory> iterateRoles(List<ProductCategory> menuVoList,String pid,Long level){ List<ProductCategory> result = new ArrayList<>(); ++level;//level計算當前處於第幾級 for (ProductCategory menuVo : menuVoList) { String menuid = menuVo.getId().toString();//獲取選單的id String parentid = menuVo.getParentId().toString();//獲取選單的父id if(parentid != "0"){ if(parentid.equals(pid)){ menuVo.setLevel(level); List<ProductCategory> iterateMenu = iterateRoles(menuVoList,menuid,level); menuVo.setProductCategories(iterateMenu); result.add(menuVo); } } } return result; }
思路:先從第三級思考,為什麼會是3?加1!哪裡的加1,上級的加1,上級是2,2+1=3
2是怎麼來的,也是上級加1來的,總結到最上一級就是0.
突破口:menuVo.setLevel(level);
iterateRoles(menuVoList,menuid,level);
同級的不能改變只能都是同一個值,那麼level就註定只能在for外面了,level也只能來的時候在加一,在其他地方會有其他錯誤