一般用在菜单层级中,需要通过Java对前端传入的参数或数据库中查询到的参数进行转换处理。
1. 将树状转为列表
- 转换前的树状实例对象
@Data
public class Menu {
private String menuName;
private List
- 转换后的列表实例对象
@Data
public class MenuConfig{
private String menuCode; //菜单编码
private String menuName; //菜单名称
private Integer menuLevel; //菜单层级
private String menuParentCode; //父级菜单编码
}
- 转换方法
调用getMenuList方法时,menuLevel为置为1,menuParentCode为null
//第一此调用时 层级为1 父级菜单code为null public ListgetMenuList(Integer menuLevel, String menuParentCode, List
2. 将列表转为树状
- 转换前后的对象
@Data
public class MenuConfigResp {
private String menuName;
private String menuCode;
private String menuParentCode;
private Integer menuLevel;
private List children;
}
- 转换方法
public ListrecursiveTree(List menus) { List root = new ArrayList<>(); Map menusMap = menus.stream().collect(Collectors.toMap(MenuConfigResp::getMenuCode, menu -> menu)); for (MenuConfigResp menu : menus) { String parentCode = menu.getMenuParentCode(); if (StrUtil.isEmpty(parentCode)) { root.add(menu); continue; } MenuConfigResp menuConfigRespBO = menusMap.get(parentCode); if (Objects.isNull(menuConfigRespBO.getChildren())) { menuConfigRespBO.setChildren(new ArrayList<>()); } menuConfigRespBO.getChildren().add(menu); } return root; }
此方法中,入参的MenuConfigResp的children为null。



