生成分类层级列表

在做公司项目的时候遇到的一个小问题

将一个存放所有数据的list转成具有层级关系的list

如下图是希望得到的结果,初始结构是所有数据存放在一个list里面

 

asd

CategoryVO{

       categoryId  分类ID

       parentId       父级ID

       categoryLevel            分类层级

       children        子分类(ArrayList)

}

 

map   ->HashMap<分类id, 分类VO>

result  ->ArrayList<分类VO>

 

for (CategoryVO vo : originList) {

    map.put(vo.getCategoryld(), vo);//map存储id->VO的映射

}

 

for (CategoryVO vo : originList) {

    if (1.equals(vo.getCategoryLevel())){

        result.add(vo); //是第一级则放入result列表中

    }else {

        CategoryVO parentCategory = map.get(vo.getParentld();

        if (parentCategory != null) { //不是第一级则放入父级children列表中

            parentCategory.getChildren().add(vo);

        }

    }

}

优点:支持任意层级,只查询一次数据库,代码简洁。

缺点:可读性较差,不适合数据量过大场景。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值