不用递归不用2层循环,把多层级数据按树形结构排列的方法。

根据代码的注释去实现自己的需求

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<>;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值