• 列表转树形结构


    这样的应用场景例如组织架构树,由于Mysql不象Oracle有支持树形查询的sql, 所以Mysql只能返回普通的列表数据,需要我们通过代码对列表进行加工,返回树形结构的数据,用途一般用于前端显示,以下是java代码示例,目前代码还不通用,只是个demo

    public class TestLandType {
    
    
    
        public static  List<LandType> init() {
            //准备数据
            LandType landType1 = new LandType(1,"杭州" , 0 );
            LandType landType2 = new LandType(2,"宁波" , 0 );
            LandType landType3 = new LandType(3,"温州" , 0 );
    
            LandType landType4 = new LandType(11,"上城区" , 1);
            LandType landType5 = new LandType(12,"余杭区" , 1);
    
            LandType landType6 = new LandType(21,"宁波1区" , 2);
            LandType landType7 = new LandType(22,"宁波1区" , 2);
    
            List<LandType> list = Arrays.asList(landType1, landType2,landType3,landType4,
                    landType5,landType6,landType7);
            return list ;
        }
    
        private  static List<Integer> idList = new ArrayList<>(); //用来保存已处理过的id
    
        public   static List<LandType> types = init();
    
        public static Map<String,Object> sort(LandType type){
            Map<String,Object> tree = new LinkedHashMap<>();
            Integer  id = type.getId();
           // if(! idList.contains(id)){
               // idList.add(id);
                tree.put("node",type); //保存当前节点
    
                List<LandType> sub = new ArrayList<>();
                for (LandType data: types) {
                    if( data.getPid() == id){
                        sub.add(data);
                    }
                }
                List<Map<String,Object>> sub1 = new ArrayList<>();
    
                for (LandType subType : sub) {
                    //****** 再根据取出来的集合 ,递归此方法 *******
                    Map<String,Object> subtree1 = sort(subType);
                    sub1.add(subtree1);
                }
                if(sub1 != null && sub1.size()>0)
                    tree.put("child", sub1);
            //}
            return tree ;
        }
    
    
    
    
    
        public static void main(String[] args) {
    
            LandType type = new LandType(0,"地块类别",null);
    
    
    
            Map<String,Object> tree = sort(type );
    
            System.out.println(JSON.toJSONString(tree) );
    
        }
    }
  • 相关阅读:
    视觉里程计VO-直接法
    Linux安装libcholmod-dev找不到的解决方法
    Levenberg-Marquadt Method
    Gauss-Newton Method
    CMake
    方差 标准差 协方差
    SFM
    矩阵分解
    kvm学习笔记
    python学习笔记
  • 原文地址:https://www.cnblogs.com/hzhuxin/p/14765621.html
Copyright © 2020-2023  润新知