Java递归实现树形结构
1、数据准备
public class Department {
@TableId(value = "dep_id", type = IdType.ASSIGN_ID)
private Integer depId;
@TableField("dp_name")
private String dpName;
@TableLogic
@TableField(fill =FieldFill.INSERT)
private Integer deletd;
private String information;
@TableField("parent_id")
private Integer parentId;
private String created;
private String modified;
@TableField(value = "creation_time",fill = FieldFill.INSERT)
private Date creationTime;
@TableField(value = "update_time",fill = FieldFill.INSERT_UPDATE)
private Date updateTime;
@TableField(exist = false)
private List<Department> children;
private Integer number;
2、实现类
@Override
public List<Department> listTree() {
List<Department> arrayList = new ArrayList<>();
List<Department> list = baseMapper.selectList(null);
for (Department dep : list) {
if (dep.getParentId() == 0) {
arrayList.add(findChildren(dep, list));
}
}
return arrayList;
}
private Department findChildren(Department dep, List<Department> list) {
for (Department deps : list) {
if (dep.getDepId() == deps.getParentId()) {
if (dep.getChildren() == null) {
dep.setChildren(new ArrayList<Department>());
}
dep.getChildren().add(findChildren(deps, list));
}
}
return dep;
}