一、树结构用来做什么?
树结构多用于菜单、部门、公司等父子集结构的数据。
二、使用示例
/**
*获取树结构数据
* @author L_dy
* @date 2022/4/11 14:48
* @return java.util.List<com.clt.base.menu.domain.Menu>
*/
public List<Menu> childrenMenuList(Menu menu) {
List<Menu> menuList = new ArrayList<>();//new一个集合,用以存储整个树结构
List<Menu> menus = new ArrayList<>();
List<Menu> childrenMenuList = menuMapper.childrenMenuList(menu);//此方法为获取每个父节点
for (Menu menu1 : childrenMenuList) {
menus = getNextSubSet(menu1);//以父节点为参数获取下面的所有子、孙节点所生成的树结构
menu1.setChildrenMenuList(menus);//生成树结构将获取的结构数据存储父节点对象里
menuList.add(menu1);
}
return menuList;
}
/**
*生成树结构
* @author L_dy
* @date 2022/4/11 14:48
* @return java.util.List<com.clt.base.menu.domain.Menu>
*/
public List<Menu> getNextSubSet(Menu menu) {
List<Menu> menus = menuMapper.childrenMenuListByParentId(menu);//以父节点获取子节点
for (Menu menu1 : menus) {
List<Menu> nextLevel = getNextLevel(menu1);//获取子节点下的再有的子孙节点
menu1.setChildrenMenuList(nextLevel);//生成树结构将获取的结构数据存储父节点对象里
}
return menus;
}
/**
*获取每个子节点
* @author L_dy
* @date 2022/4/11 14:48
* @return java.util.List<com.clt.base.menu.domain.Menu>
*/
public List<Menu> getNextLevel(Menu menu) {
List<Menu> menus = menuMapper.childrenMenuListByParentId(menu);//以父节点获取子节点
if (menus.size()!=0){
for (Menu menu1 : menus) {
menu1.setChildrenMenuList(getNextLevel(menu1));//生成树结构将获取的结构数据存储父节点对象里
}
}
return menus;
}