/**
* 将tree结构转换为list路径结构
* @param list
* @param results
* @return
*/
public List<List<ICBmEvaluation>> formList(List<ICBmEvaluation> list,List<ICBmEvaluation> results){
List<List<ICBmEvaluation>> listList = new ArrayList<>();
if(StringUtils.isNotEmpty(list)){
for(ICBmEvaluation icBmEvaluation : list){
//声明一个list,存放路径上的所有节点
List<ICBmEvaluation> treePath = new ArrayList<>();
treePath.addAll(results);
ICBmEvaluation treeVo = new ICBmEvaluation();
//将tree复制给treeVo
BeanUtils.copyProperties(icBmEvaluation,treeVo);
treeVo.setChildList(null);
//将child为零的对象放入路径中
treePath.add(treeVo);
//检查当前节点对象的child是否为空
if(StringUtils.isEmpty(icBmEvaluation.getChildList())){
listList.add(treePath);
}else {
List<List<ICBmEvaluation>> resultList = formList(icBmEvaluation.getChildList(),treePath);
//迭代结束
listList.addAll(resultList);
}
}
}
return listList;
}
传过来的参数list为一个树形结构 { ICBmEvaluation1:{ ICBmEvaluation2:{ ICBmEvaluation3, ICBmEvaluation4, ICBmEvaluation5 } } } 参数results一开始为空值,之后循环遍历时里面为一条路径上之前的所有节点。 ICBmEvaluation对象的domain
public class ICBmEvaluation extends BaseEntity {
/**政策指标标题ID**/
@NotBlank(message = "政策指标标题ID不能为空")
private String titleId;
/** 政策指标标题名称 **/
@NotBlank(message = "政策指标标题名称不能为空")
private String titleName;
/**父id**/
@NotBlank(message = "父id不能为空")
private String parentId;
/**子集合**/
private List<ICBmEvaluation> childList;
}
结果为:
[
{
ICBmEvaluation1,
ICBmEvaluation2,
ICBmEvaluation3
},
{
ICBmEvaluation1,
ICBmEvaluation2,
ICBmEvaluation4
},
{
ICBmEvaluation1,
ICBmEvaluation2,
ICBmEvaluation5
}
]