有一个类Org,它有属性id,pid,name,children,然后有一个list里有10个org,写个java代码生成树
时间: 2024-12-27 14:32:34 浏览: 6
在Java中,你可以使用递归的方式来构建组织机构的树结构。首先,我们需要定义一个`Org`类来代表组织结构,然后遍历列表,利用每个`Org`的`pid`属性(父ID)来链接成树形结构。以下是一个简单的示例:
```java
import java.util.ArrayList;
import java.util.List;
class Org {
int id;
int pid;
String name;
List<Org> children;
Org(int id, int pid, String name) {
this.id = id;
this.pid = pid;
this.name = name;
this.children = new ArrayList<>();
}
}
public class OrganizationTreeBuilder {
public static void main(String[] args) {
List<Org> orgs = createSampleData(); // 创建包含10个org的示例数据
buildOrganizationTree(orgs); // 构建组织结构树
}
// 创建一个示例组织列表
private static List<Org> createSampleData() {
List<Org> orgs = new ArrayList<>();
orgs.add(new Org(1, 0, "总公司")); // 根节点
orgs.add(new Org(2, 1, "部门A"));
orgs.add(new Org(3, 1, "部门B"));
orgs.add(new Org(4, 2, "子公司A"));
orgs.add(new Org(5, 2, "子公司B"));
orgs.add(new Org(6, 3, "部门C"));
// ...其他8个org
// 模拟随机连接
for (Org org : orgs) {
if (org.pid != 0) {
org.children.add(findChildById(orgs, org.pid)); // 查找并添加到children
}
}
return orgs;
}
// 找到给定id的子节点
private static Org findChildById(List<Org> orgs, int id) {
for (Org org : orgs) {
if (org.id == id) {
return org;
}
}
return null;
}
// 建立组织树
private static void buildOrganizationTree(List<Org> orgs) {
for (Org org : orgs) {
if (org.pid > 0) { // 只有非根节点需要递归
org.children.add(buildOrganizationTree(findChildById(orgs, org.pid)));
}
}
}
}
```
这个代码创建了一个组织结构树,其中"总公司"是根节点,其下有"部门A"、"部门B","部门A"有两个子节点"子公司A"和"子公司B",以此类推。
阅读全文