一、TreeUtil构建树形结构
1、方式一
public static void main(String[] args) {
List<TreeNode<String>> nodeList = CollUtil.newArrayList();
nodeList.add(new TreeNode<>("1", "0", "系统管理", 5));
nodeList.add(new TreeNode<>("11", "1", "用户管理", 222222));
nodeList.add(new TreeNode<>("111", "11", "用户添加", 0));
nodeList.add(new TreeNode<>("2", "0", "店铺管理", 1));
nodeList.add(new TreeNode<>("21", "2", "商品管理", 44));
nodeList.add(new TreeNode<>("221", "2", "商品管理2", 2));
// 0表示最顶层的id是0
List<Tree<String>> treeList = TreeUtil.build(nodeList, "0");
treeList.forEach(v -> {
System.out.println(JSON.toJSONString(v));
});
//{"id":"2","parentId":"0","weight":1,"name":"店铺管理","children":[{"id":"221","parentId":"2","weight":2,"name":"商品管理2"},{"id":"21","parentId":"2","weight":44,"name":"商品管理"}]}
//{"id":"1","parentId":"0","weight":5,"name":"系统管理","children":[{"id":"11","parentId":"1","weight":222222,"name":"用户管理","children":[{"id":"111","parentId":"11","weight":0,"name":"用户添加"}]}]}
}
2、方式二
@Data
public class SysMenuOutDto {
private Long id;
private String menuName;
private String menuCode;
private String parentCode;
private Integer menuSort;
private String icon;
}
public static void main(String[] args) {
List<SysMenuOutDto> list = new ArrayList<>();
SysMenuOutDto sysMenuOutDto1 = new SysMenuOutDto();
sysMenuOutDto1.setId(1l);
sysMenuOutDto1.setMenuCode("1");
sysMenuOutDto1.setMenuName("系统管理");
sysMenuOutDto1.setMenuSort(1);
sysMenuOutDto1.setParentCode("root");
sysMenuOutDto1.setIcon("icon1");
SysMenuOutDto sysMenuOutDto11 = new SysMenuOutDto();
sysMenuOutDto11.setId(11l);
sysMenuOutDto11.setMenuCode("11");
sysMenuOutDto11.setMenuName("用户管理");
sysMenuOutDto11.setMenuSort(1);
sysMenuOutDto11.setParentCode("1");
sysMenuOutDto11.setIcon("icon11");
SysMenuOutDto sysMenuOutDto2 = new SysMenuOutDto();
sysMenuOutDto2.setId(2l);
sysMenuOutDto2.setMenuCode("2");
sysMenuOutDto2.setMenuName("入住管理");
sysMenuOutDto2.setMenuSort(2);
sysMenuOutDto2.setParentCode("root");
sysMenuOutDto2.setIcon("icon2");
SysMenuOutDto sysMenuOutDto21 = new SysMenuOutDto();
sysMenuOutDto21.setId(221l);
sysMenuOutDto21.setMenuCode("21");
sysMenuOutDto21.setMenuName("能力评估");
sysMenuOutDto21.setMenuSort(1);
sysMenuOutDto21.setParentCode("2");
sysMenuOutDto21.setIcon("icon21");
SysMenuOutDto sysMenuOutDto22 = new SysMenuOutDto();
sysMenuOutDto22.setId(22l);
sysMenuOutDto22.setMenuCode("22");
sysMenuOutDto22.setMenuName("定制服务");
sysMenuOutDto22.setMenuSort(2);
sysMenuOutDto22.setParentCode("2");
sysMenuOutDto22.setIcon("icon22");
list.add(sysMenuOutDto1);
list.add(sysMenuOutDto11);
list.add(sysMenuOutDto2);
list.add(sysMenuOutDto21);
list.add(sysMenuOutDto22);
TreeNodeConfig MENU_CONFIG = new TreeNodeConfig();
MENU_CONFIG.setWeightKey("menuSort");
MENU_CONFIG.setIdKey("menuCode");
MENU_CONFIG.setParentIdKey("parentCode");
MENU_CONFIG.setNameKey("menuName");
List<Tree<String>> build = TreeUtil.build(
list,
"root",
MENU_CONFIG,
(treeNode, tree) -> {
tree.setId(treeNode.getMenuCode());
tree.setParentId(treeNode.getParentCode());
tree.setName(treeNode.getMenuName());
tree.setWeight(treeNode.getMenuSort());
tree.putExtra("id", treeNode.getId());
tree.putExtra("icon", treeNode.getIcon());
});
build.forEach(v -> {
System.out.println(JSON.toJSONString(v));
});
}
//{"menuCode":"1","parentCode":"root","menuName":"系统管理","menuSort":1,"id":1,"icon":"icon1","children":[{"menuCode":"11","parentCode":"1","menuName":"用户管理","menuSort":1,"id":11,"icon":"icon11"}]}
//{"menuCode":"2","parentCode":"root","menuName":"入住管理","menuSort":2,"id":2,"icon":"icon2","children":[{"menuCode":"21","parentCode":"2","menuName":"能力评估","menuSort":1,"id":221,"icon":"icon21"},{"menuCode":"22","parentCode":"2","menuName":"定制服务","menuSort":2,"id":22,"icon":"icon22"}]}