把list转换成json树

本文介绍了一个用于构建导航树结构的算法实现,通过递归查找子节点并整合到父节点的children属性中,确保了树状数据结构的正确性和完整性。

创建两个类,具体看实际情况,先存着

public static List<ZaxPortalNavigation> initTree(List<ZaxPortalNavigation> listOr, int id) {
        List<ZaxPortalNavigation> arrayList = new ArrayList<ZaxPortalNavigation>();
        for (int i = 0; i < listOr.size(); i++) {
            ZaxPortalNavigation order = listOr.get(i);
            //如果有父级id与id相同,则证明当前类为orderId的子类
            if (order.getParentId().equals(id)) {
                //判断该子类下是否还有子类
                List<ZaxPortalNavigation> listOrs = initTree(listOr, order.getId());
                //如果有子类,则判断children中是否已经赋值
                if (listOrs.size() > 0) {
                    //如果已经children已经赋值,则使用for循环将子类加入到children中
                    if (null != order.getEntitys() && order.getEntitys().size() > 0) {
                        List<ZaxPortalNavigation> chilOrder = order.getEntitys();
                        for (int j = 0; j < listOrs.size(); j++) {
                            chilOrder.add(listOrs.get(j));
                        }
                        order.setEntitys(chilOrder);
                    } else {//如果没有赋值,则将数据直接加入到children中
                        order.setEntitys(listOrs);
                    }
                    arrayList.add(order);
                } else { //如果没有值,直接加入到arrayList

                    arrayList.add(order);
                }
            }
        }

        return arrayList;
    }

    public boolean getOrder(List<ZaxPortalNavigation> arrayList, ZaxPortalNavigation order) {
        boolean resu = true;
        for (int i = 0; i < arrayList.size(); i++) {
            ZaxPortalNavigation entity = arrayList.get(i);
			//如果和当前实体类重复,返回false
            if (entity.getId() == order.getId()) {
                resu = false;
                break;
            } else { //查询子类是否重复
                if (null != entity.getEntitys() && entity.getEntitys().size() > 0) {
                    resu = getOrder(entity.getEntitys(), order);
                    if (!resu) {
                        break;
                    }
                }
            }
        }
        return resu;
    }
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值