节点 二级节点 三级节点 for循环 树结构
2015-12-07 17:20
381 查看
/** * 返回树JSON数据 * * @param extCode * @param isShowHide * @param response * @return */ @RequiresPermissions("user") @ResponseBody @RequestMapping(value = "treeData") public List<Map<String, Object>> treeData(HttpServletResponse response) { List<Map<String, Object>> mapList = Lists.newArrayList(); List<ProjectType> list = projectTypeService.findList(new ProjectType()); //获取第一级节点 List<ProjectType> fristLevelList=new ArrayList<ProjectType>(); for (int i = 0; i < list.size(); i++) { ProjectType e = list.get(i); Map<String, Object> map = Maps.newHashMap(); if(" ".equals(e.getParentCode().getTypeCode())){ map.put("id", e.getTypeCode()); map.put("pId", e.getParentCode().getTypeCode()); map.put("name", e.getTypeName()); mapList.add(map); fristLevelList.add(e); } } //二级节点 List<ProjectType> secondLevelList=new ArrayList<ProjectType>(); for (ProjectType fristProjectType : fristLevelList) { for (ProjectType secondProjectType : list) { Map<String, Object> map = Maps.newHashMap(); if(fristProjectType.getTypeCode().equals(secondProjectType.getParentCode().getTypeCode())){ map.put("id", secondProjectType.getTypeCode()); map.put("pId", secondProjectType.getParentCode().getTypeCode()); map.put("name", secondProjectType.getTypeName()); mapList.add(map); secondLevelList.add(secondProjectType); } } } //三级节点 for (ProjectType secondProjectType : secondLevelList) { for (ProjectType thridProjectType : list) { Map<String, Object> map = Maps.newHashMap(); if(secondProjectType.getTypeCode().equals(thridProjectType.getParentCode().getTypeCode())){ map.put("id", thridProjectType.getTypeCode()); map.put("pId", thridProjectType.getParentCode().getTypeCode()); map.put("name", thridProjectType.getTypeName()); mapList.add(map); } } } return mapList; }
jsp:
<div class="input-inline width-160">
<sys:treeselect id="projectType_typeName"
name="projectType.typeCode" value="${projectType.typeCode }"
labelName="projectType.typeName"
labelValue="${projectType.typeName }" title="计划类别:"
url="/prg/projectType/treeData" cssClass="required"
allowClear="true" notAllowSelectParent="true" checked="true" />
</div>
优化:
List<Map<String, Object>> mapList = Lists.newArrayList(); List<ProjectType> list = projectTypeService.findList(new ProjectType()); //获取第一级节点 List<ProjectType> fristLevelList=new ArrayList<ProjectType>(); //二级节点 List<ProjectType> secondLevelList=new ArrayList<ProjectType>(); //三级节点 List<ProjectType> thirdLevelList=new ArrayList<ProjectType>(); List<String> firstLevelId = new ArrayList<String>(); for(ProjectType projectType : list) { if(" ".equals(projectType.getParentCode().getTypeCode())) { // 一级节点 Map<String, Object> map = Maps.newHashMap(); map.put("id", projectType.getTypeCode()); map.put("pId", projectType.getParentCode().getTypeCode()); map.put("name", projectType.getTypeName()); // 这样添加的话,会有二级节点和三级节点在存储顺序上交错的问题 mapList.add(map); fristLevelList.add(projectType); firstLevelId.add(projectType.getTypeCode()); } } list.removeAll(fristLevelList); for(ProjectType projectType : list) { Map<String, Object> map = Maps.newHashMap(); map.put("id", projectType.getTypeCode()); map.put("pId", projectType.getParentCode().getTypeCode()); map.put("name", projectType.getTypeName()); // 这样添加的话,会有二级节点和三级节点在存储顺序上交错的问题 mapList.add(map); if(firstLevelId.contains(projectType.getParentCode().getTypeCode())) { // 二级节点 secondLevelList.add(projectType); } else { // 其他节点应该都为三级节点 thirdLevelList.add(projectType); } } return mapList;
相关文章推荐
- WMI 编程之接收事件通知
- 第十四周 项目2 二叉树排序树中查找的路径
- 支付宝支付开发教程
- 安装redis,含安装步骤和安装中出现的详细错误分析
- 洞穴探测
- SVG 动画实现弹性的页面元素效果
- IntelliJ IDEA Community Edition 14.1.4下 javafx scenebuilder的使用
- JS原生父子页面操作
- CIFilter 创建二维码
- 第十一周项目二:用二叉树求解代数表达式
- Tvos模拟器遥控的快捷键
- Android中的BaseAdapter的使用极其优化
- Supermap人物骨骼动画说明文档
- libSVM学习笔记
- 从jQuery到AngularJS,再到React,前端必须走在最前端
- 深入优先算法
- Daily Scrum - 12/07
- 查看系统信息的常用命令汇总
- 进程和线程关系及区别
- Android实现沉浸式通知栏,通知栏可以根据app的颜色可改变啦