private int count;
private Map<String, String> orgMap = null;
public Map<String, String> listOrganizations(Organization org) {
orgMap = new LinkedHashMap<String, String>();
count = 0;
String orgId = null;
if (org != null) {
orgMap.put(org.getId(), "├" + org.getName());
orgId = org.getId();
} else {
count = -1;
}
List<Organization> list = this.organizationDao.getChildrenById(orgId);
recursiveOrg(list, org);
return orgMap;
}
public void recursiveOrg(List<Organization> child, Organization parent) {
//每向下一層,多一個縮入單位
count++;
String strPading = ""; //縮入字符
//通過i來控制縮入字符的長度,我這裏設定的是一個全角的空格
for (int i = 0; i < count; i++)
strPading += " ";//如果要增加縮入的長度,改成兩個全角的空格就可以了
if (child != null && child.size() > 0) {
for (int i = 0; i < child.size(); i++) {
Organization par = child.get(i);
orgMap.put(par.getId(), strPading + "├" + par.getName());
recursiveOrg(par.getChildren(), par);
}
}
//遞歸結束,要回到上一層,所以縮入量減少一個單位
count--;
}
效果:根據機構遞歸出下屬機構,並層次排列
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.