class Department{
private String id;
private String parentId;
private String depName;
public Department(){
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getParentId() {
return parentId;
}
public void setParentId(String parentId) {
this.parentId = parentId;
}
public String getDepName() {
return depName;
}
public void setDepName(String depName) {
this.depName = depName;
}
public boolean equals(Object obj){
if(this.id.equals(((Department)obj).getId()))
return true;
else
return false;
}
}
public void test(){
List<Department> deps = new ArrayList<Department>();
Department d3 = new Department();
d3.setId("003");
d3.setParentId("002");
d3.setDepName("产品部");
deps.add(d3);
Department d1 = new Department();
d1.setId("001");
d1.setParentId(null);
d1.setDepName("技术部");
deps.add(d1);
Department d2 = new Department();
d2.setId("002");
d2.setParentId("001");
d2.setDepName("研发部");
deps.add(d2);
List<Department> ds = this.getDeps(d1,deps);
ds.add(0, d1);
for(Department dep : ds)
System.out.println(dep.getDepName());
}
public List<Department> getDeps(Department department,List<Department> allDeps){
List<Department> child= new ArrayList<Department>();
List<Department> result = new ArrayList<Department>();
for(Department dep : allDeps)
if(dep.getParentId() != null && dep.getParentId().equals(department.getId()))
child.add(dep);
result.addAll(child);
for(Department dep : child)
result.addAll(getDeps(dep,allDeps));
return result;
}