根据代码的注释去实现自己的需求
public HttpResponse treeDataBackIndustry() {
//把所有的数据全部查询出来
List<TreeDataBackIndustryVO> treeIndustryVOS = sysIndustryMapper.selectAllIndustry();
//定义一个集合来存放最上级的数据
ArrayList<TreeDataBackIndustryVO> treeDataBackIndustryVOS= new ArrayList<>();
//定义一个map集合存放所有行业,减少for循环次数,方便查找数据
HashMap<Integer, TreeDataBackIndustryVO> hashMap = new HashMap<>();
//把所有的数据全部存放到map集合里面,用id作为key,方便我们下面,直接通过父级id找到父级对象
for (TreeDataBackIndustryVO treeDataBackIndustryVO : treeIndustryVOS) {
hashMap.put(treeDataBackIndustryVO.getIndustryId(),treeDataBackIndustryVO);
}
//循环所有数据
for (TreeDataBackIndustryVO treeDataBackIndustryVO : treeIndustryVOS){
//我这里的判断是,判断当前数据如果是最上级的数据就把他放在我们定义的存放最上级数据的集合里面
if (treeDataBackIndustryVO.getPreIndustryId()==0){
treeDataBackIndustryVOS.add(treeDataBackIndustryVO);
}else {//如果不是最上级数据,证明他拥有父级,我们通过他的父级id去map集合里面快速的拿到他的父级,这就是为什么上面要用id作为key去存放在map集合里面
TreeDataBackIndustryVO treeDataBackFatherIndustryVO = hashMap.get(treeDataBackIndustryVO.getPreIndustryId());
//拿到的父级不为空的话,就把当前对象存入到他的父级内部,注意:对象的结构必须是本身的全部数据,加上一个拥有的子级对象的集合,好方便我们把子级存放在父级对象里面
if (treeDataBackFatherIndustryVO!=null){
treeDataBackFatherIndustryVO.getTreeDataBackIndustryVOS().add(treeDataBackIndustryVO);
}
}
}
//返回我们定义的存放最上级数据的集合,这个集合里面的数据就是根据树形结构分层级排列的数据了
return HttpResponse.success(treeDataBackIndustryVOS);
}
注意:代码只是借鉴,实际使用情况根据你本身的需求来完成,最好是不看代码,通过注释去了解怎么实现功能。
注意:实体类的结构最好是想下面示例代码这样
public class Test(){
//类本身的数据
private String name;
private Integer age;
//这个集合是用来存放子级的数据的.
private List<Test> listChild=new ArrayList<>;
}