参考文章:https://www.cnblogs.com/zhou-920644981/p/11329095.html
结合自己的业务代码修改后:
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
public class Test2 {
private static List<Organization> organizationList = initData();
public static void main(String[] args) {
Organization organization = organizationList.stream().min(Comparator.comparing(Organization::getId)).get();
Organization result = generateFill(organization.getId());
}
public static Organization generateFill(Long id) {
Organization root = getById(id);
List<Organization> childNodes = getChildrenById(id);
if (!childNodes.isEmpty()) {
for (Organization node : childNodes) {
Organization childRoot = generateFill(node.getId());
root.getOrganizations().add(childRoot);
}
}
return root;
}
private static Organization getById(Long id) {
for (Organization organization : organizationList) {
if (organization.getId().equals(id)) {
return organization;
}
}
return null;
}
private static List<Organization> getChildrenById(Long id) {
List<Organization> childNodes = new ArrayList<>();
for (Organization organization : organizationList) {
if (organization.getParentId() != null && organization.getParentId().equals(id)) {
childNodes.add(organization);
}
}
return childNodes;
}
private static List<Organization> initData() {
List<Organization> list = new ArrayList<>();
Organization o1 = new Organization(1L, "根组织", null);
Organization o2 = new Organization(2L, "二级组织1", 1L);
Organization o3 = new Organization(3L, "三级组织1", 2L);
Organization o4 = new Organization(4L, "二级组织2", 1L);
Organization o5 = new Organization(5L, "三级组织2", 4L);
Organization o6 = new Organization(6L, "四级组织1", 3L);
Organization o7 = new Organization(7L, "四级组织2", 5L);
list.add(o1);
list.add(o2);
list.add(o3);
list.add(o4);
list.add(o5);
list.add(o6);
list.add(o7);
return list;
}
}
import java.util.ArrayList;
import java.util.List;
public class Organization {
/**
* id
*/
private Long id;
/**
* 名称
*/
private String name;
/**
* 父级id
*/
private Long parentId;
/**
* 子级组织结构
*/
private List<Organization> organizations;
public Organization(Long id, String name, Long parentId) {
this.id = id;
this.name = name;
this.parentId = parentId;
this.organizations = new ArrayList<>();
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Long getParentId() {
return parentId;
}
public void setParentId(Long parentId) {
this.parentId = parentId;
}
public List<Organization> getOrganizations() {
return organizations;
}
public void setOrganizations(List<Organization> organizations) {
this.organizations = organizations;
}
}