正常项目开发中很多地方都需要用到树形结构,如分类,用户,权限等。而在数据库中,通常是使用一个parent_id这样一个字段来记录当前数据的父节点id。那么我们直接从数据库中查出来的是个list,就需要使用代码手动将list转成tree的结构了。我这里提供2种方法实现列表到树形结构的转换。
举一个用户的例子,用户实体User结构如下:@Data
@ToString
public class User {
/**
* 用户id
*/
private Long id;
/**
* 用户名
*/
private String name;
/**
* 父id,即上级id
*/
private Long parentId;
/**
* 子节点列表,即直系下级列表
*/
private List children;
/**
* 构造函数
* @param id
* @param name
* @param parentId
*/
public User(Long id, String name, Long parentId) {
this.id = id;
this.name = name;
this.parentId = parentId;
}
}
接下来我们需要造一些模拟数据,这里展示下用户间的层级结构