您的位置:首页 > 其它

节点 二级节点 三级节点 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;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: