java实现多级目录树(递归实现)
一.应用场景
有时候需要我们后台给前台传树结构的数据,要怎么查询? 怎么返回数据呢?
二.数据库表设计以及数据内容(以部门举例)
id 主键 parent_id 父级部门id depart_name 部门名词 sort 部门排序
三.实体类
@Data public class KunKun implements Serializable { private static final long serialVersionUID = 1L; @ApiModelProperty("部门id") private String id; @ApiModelProperty("父级部门id") private String parentId; @ApiModelProperty("机构/部门名称") private String departName; @ApiModelProperty("子级部门的集合") private List<KunKun> children; }
四.代码实现
public void selectKunTree() { //查询部门信息,获取全部部门信息 List<KunKun> kunList = xxxxMapper.selectList() ; //组装成树形结构 //找到所有的一级分类(也就是树的根节点) List<KunKun> ikuns = kunList.stream().filter(ikun -> ikun.getParentId() == 0 ).map((menu) -> { menu.setChildren(getChildrens(menu,kunList)); return menu; }).sorted((menu1,menu2)-> { //如果你查询的时候就排好序了就不用写这里 return menu1.getSort() - menu2.getSort(); }).collect(Collectors.tolist()); //返回树结构的list return ikuns; } //递归方法 private List<KunKun> getChildrens(KunKun root,List<KunKun> all){ List<KunKun> children = all.stream().filter(ikun -> { return ikun.getParentId() == root.getId(); }).map(ikun -> { //找子部门 ikun.setChildren(getChildrens(ikun ,all)); return categoryEntity; }).sorted( (menu1 ,menu2) return menu1.getSort - menu2.getSort() }).collect(Collectors .tolist()); return children; }
下一篇:
Python文件处理中的字符编码及字符集