1. 程式人生 > >java 遞迴 設定層級 分級數

java 遞迴 設定層級 分級數

  //多級角色遞迴查詢方法
    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也只能來的時候在加一,在其他地方會有其他錯誤