java List转为树状List

基本逻辑

每个元素都必有三个字段

id

parentId,

childrenList

parentId为0则代表为顶级目录,没有父级元素。

遍历元素,将所有不为顶级目录的元素add进他们父级的childrenList中,

这样所有的元素都放到了他们的父级元素中

再删除所有不为顶级目录的元素就ok了

        //获取list
        List<RoleAuthVO> voList = ResultBean.getVOList(result, RoleAuthVO::new);
        //遍历list,
        for (RoleAuthVO roleAuthVO : voList) {
            //如果元素不为顶级目录
            if (roleAuthVO.getAuthParentId() != null && roleAuthVO.getAuthParentId() != 0) {
                //再次遍历list
                for (RoleAuthVO authVO : voList) {
                    //则在整个list中找到元素的父级
                    if (roleAuthVO.getAuthParentId().equals(authVO.getAuthId())) {
                        //将元素放入父级中
                        authVO.getChildrenRoleAuthList().add(roleAuthVO);
                    }
                }
            }
        }
        //删除掉所以不为顶级目录的元素
        voList.removeIf(roleAuthVO -> roleAuthVO.getAuthParentId() != null && roleAuthVO.getAuthParentId() != 0);

猜你喜欢

转载自blog.csdn.net/qinkaiyuan94/article/details/82628910