记录一种把树结构的对象全部取到一个集合中的写法

一个树结构的对象,层次不限.可用户自定义增加 如 

public class Org{
    private String id;
    private String name;
    private List<Org> children; 

}

在查询的时候直接封装成一个树结构.

List<Org> list = this.sqlFind(sb.toString(), Org.class, params.toArray());//查询出所有部门id
		List<Org> result = new ArrayList<>();
		Map<String, Org> map = new LinkedHashMap();		//id,org
		for(Org o : list){
			o = get(o.getId());//获取org对象
			o.setChildren(new ArrayList<Org>());
			map.put(o.getId(), o);
			Org parent = null;
		}
        for(String orgId : map.keySet()){
            //设置父子关系 children
			Org org = map.get(orgId);
			Org parent = org.getParent();
			if(parent != null)
				parent.getChildren().add(org);
				result.add(org);
		}

使用以下则可取出所有org对象放到集合中

List<OutputSummaryVo> retVoList = new ArrayList<>();	//结果
while(!orgs.isEmpty()){
	Org org = orgs.remove(0);
	OrgVo vo = new OrgVo();
	vo.setId(org.getId());
	vo.setName(org.getName());
	retVoList.add(vo);
	orgs.addAll(org.getChildren());
}

猜你喜欢

转载自blog.csdn.net/qq_40085888/article/details/88655673