1. 实体类
public class Department{
private Long id;
private String name;
private Long parent_id;
private Department parent;
@JsonInclude(JsonInclude.Include.NON_EMPTY)
private List<Department> children = new ArrayList<>();
}
2. 算法
public List<Department> tree() {
List<Department> all = departmentMapper.loadAll();
HashMap<Long,Department> map = new HashMap<>();
all.forEach(dept->{
map.put(dept.getId(),dept);
});
List<Department> list = new ArrayList<>();
for(Department department : all){
if (department.getParent_id() == null){
list.add(department);
continue;
}
Long parent_id = department.getParent_id();
Department parent = map.get(parent_id);
parent.getChildren().add(department);
}
return list;
}