本文已参与「新人创作礼」活动,一起开启掘金创作之路
前言
树形结构一般用于无限分级表中,常用的场景是展示角色权限这块
普通写法
private List<DepartmentInfoVo> getChildrenNode(String integer, List<DepartmentInfoVo> treesList) {
List<DepartmentInfoVo> newTrees = new ArrayList<>();
for (DepartmentInfoVo department : treesList) {
if (StrUtil.isBlank(department.getDepartmentParentId())) {
continue;
}
if (integer.equals(department.getDepartmentParentId())) {
department.setChildren(getChildrenNode(department.getDepartmentId(), treesList));
newTrees.add(department);
}
}
return newTrees;
}
hutool方式
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.7.2</version>
</dependency>
TreeNodeConfig treeNodeConfig = new TreeNodeConfig();
treeNodeConfig.setWeightKey("menuSort");
treeNodeConfig.setIdKey("menuId");
treeNodeConfig.setParentIdKey("menuParentid");
treeNodeConfig.setDeep(Convert.toInt(appMenuSelectDto.getMenuDepth()));
List<Tree<String>> treeNodes = TreeUtil.build(appMenuList, "0", treeNodeConfig,
(treeNode, tree) -> {
tree.setId(treeNode.getMenuId());
tree.setParentId(treeNode.getMenuParentid());
tree.setWeight(treeNode.getMenuSort());
tree.setName(treeNode.getMenuName());
tree.putExtra("value", treeNode.getMenuName());
tree.putExtra("label", treeNode.getMenuId());
});
两种写法出来效果一样
