根據機構遞歸出下屬機構,並層次排列

	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--;
	}
效果:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章