N级菜单递归查询
2015-08-07 11:15
169 查看
/** 将所有菜单组装成树 * @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); } } } } }
相关文章推荐
- (转)PHP中extract()函数的妙用
- 【暑假】[实用数据结构]UVa11991 Easy Problem from Rujia Liu?
- 动态绑定combobox
- java的环境配置问题
- crontab
- C++_Switch Statement
- 第一次使用ungetc
- 浅析linux中snapshots, blockcommit,blockpull
- bzoj3143: [Hnoi2013]游走
- rampaser
- Spring@Autowired注解与自动装配
- hdu 1008 Elevator
- LeetCode: Multiply Strings. Java
- arc 模式下 使用宏定义单例模式(gcd 实现单例模式)
- 获取两个经纬度之间的距离,返回值是米
- 如何在Caffe中配置每一个层的结构
- MySQL sql-mode
- java.util.regex.PatternSyntaxException
- 利用python内置函数,快速统计单词在文本中出现的次数
- eclipse连接mysql