Java后台实现树形结构
开发中有好多带层级的信息,关联性就是本级ID及对应的父ID,若直接返回给前端可能处理不方便,后台处理成json套json的树形结构返回给前端他们能更好的处理,话不多说直接上代码
金字塔尖父节点默认不存值,可根据个人项目情况来
//解析传来的集合
if(list != null){
//定义接受解析集合
List<TreeResultVo> resultList = new ArrayList();
//循环遍历
for(int i = 0; i < list.size(); i++){
TreeResultVo treeResultVo = new TreeResultVo();
treeResultVo .setParentId(list.get(i).getParentId());
treeResultVo .setId(list.get(i).getId());
treeResultVo .setName(list.get(i).getName());
treeResultVo .setRanks(list.get(i).getRanks());
resultList.add(treeResultVo );
}
return createTree("",resultList);
}else {
resultList = null;
return resultList;
}
}
createTree方法
//循环遍历树形结构
private List<TreeResultVo> createTree(String Id, List<TreeResultVo> trees){
//定义返回集合
List<TreeResultVo> treeMenu = new ArrayList<>();
//定义一层层的临时集合
List<TreeResultVo> treeContinue = new ArrayList<>(trees);
for(TreeResultVo menu : trees){
if(Id.equals(menu.getParentId())){
//清除你查到的这个实体信息,不参与以后循环查询
treeContinue.remove(menu);
menu.setChildren(createTree(menu.getId(),treeContinue));
//循环都结束了 加入返回集合中
treeMenu.add(menu);
}
}
return treeMenu;
}
结果如下
"result": [
{
"children": [
{
"children": [],
"id": "16_83",
"name": "Second",
"parentid": "16",
"rank": "2"
}
],
"id": "16",
"name": "First",
"parentid": null,
"rank": "1"
}
]
}