/** 将所有菜单组装成树 * @param classDTOList 数据库查询出来的所有菜单 * 菜单列表 * @return List<ClassDTO> */ private List<ClassDTO> assembleClassTree(List<ClassDTO> classDTOList) { List<ClassDTO> classTreeList = null; if(CommonUtils.listNotNull(classDTOList)){ classTreeList = new ArrayList<ClassDTO>(); for(ClassDTO classDTO1 : classDTOList){ if(classDTO1.isLevel1()){ this.setChildClass(classDTO1, classDTOList); classTreeList.add(classDTO1); } } } return classTreeList; } /** 通过递归的方法组装菜单树 * @param classDTO * @param classDTOList * @return */ private void setChildClass(ClassDTO parentClassDTO, List<ClassDTO> classDTOList) { List<ClassDTO> childClassList = parentClassDTO.getChildList(); if(childClassList == null) { childClassList = new ArrayList<ClassDTO>(); parentClassDTO.setChildList(childClassList); } for(ClassDTO childClassDTO : classDTOList ){ if(parentClassDTO.getIdClass().equals(childClassDTO.getIdParentClass())){ childClassList.add(childClassDTO); this.setChildClass(childClassDTO, classDTOList); } } }
/** 通过递归的方法取得parentId下的子集合 * @param parentId 父级Id * @param allClassTree 菜单树状 集合 * @return */ private List<ClassDTO> getChildClassByParentId(String parentId, List<ClassDTO> allClassTree) { for (ClassDTO classDTO : allClassTree) { //找到parentId, 则返回此板块下的所有子版块集合 if (classDTO.getIdClass().equals(parentId)) { return classDTO.getChildList(); } //否则, 继续找 else { List<ClassDTO> childList = classDTO.getChildList(); if (CommonUtils.listNotNull(childList)) { childList = this.getChildClassByParentId(parentId, childList); if (childList != null) { return childList; } else { continue; } } } } return null; }
/** * 给出一颗树 递归出其下所有叶子节点 * @param allTree 给出的树 * @param leafClassList 叶子节点 * @throws BusinessServiceException */ private void loopLeafClassListByTree(List<ClassDTO> allTree, List<ClassDTO> leafClassList){ if(CommonUtils.listNotNull(allTree)){ for (ClassDTO classDTO : allTree) { if (classDTO.isLeafClass()) { leafClassList.add(classDTO); } else { List<ClassDTO> childClassList = classDTO.getChildList(); if (CommonUtils.listNotNull(childClassList)) { this.loopLeafClassListByTree(childClassList, leafClassList); } } } } }
时间: 2024-10-01 06:26:11