• 算法----递归


    递归的精髓在于某一个方法具体是做什么的!

    比如下面setChild(),查询节点所有的子节点。

        public List<TreeNode> transDepartment(List<Qydy> rootList){
            List<TreeNode> nodeList = new ArrayList<>();
            for (Qydy qydy : rootList) {
                TreeNode treeNode = new TreeNode();
                treeNode.setId(qydy.getQYDY_PKID());
                treeNode.setText(qydy.getQYMC());
                treeNode.setAttributes(qydy);
                //表明是一级父类
                if (1==qydy.getCJ()){
    //                treeNode.setState("open");
                    nodeList.add(treeNode);
                }
                treeNode.setChildren(setChild(treeNode.getId(),rootList));
            }
            return nodeList;
        }
    
    
    
        //返回当前Id的所有子节点
        public List<TreeNode> setChild(String id, List<Qydy> list ){
            List<TreeNode> childList = new ArrayList<>();
            for (Qydy qydy : list) {
                TreeNode treeNode = new TreeNode();
                if (id!=null && id.equals(qydy.getQYDY_PPKID())){
                    treeNode.setId(qydy.getQYDY_PKID());
                    treeNode.setText(qydy.getQYMC());
                    treeNode.setParentId(id);
                    treeNode.setState("close");
                    treeNode.setAttributes(qydy);
                    childList.add(treeNode);
                }
            }
            for (TreeNode department : childList) {
                List<TreeNode> treeNodes = setChild(department.getId(), list);
                if (treeNodes.size()>=1){
                    department.setState("close");
                }
                department.setChildren(treeNodes);
            }
            return childList;
        }
    

    递归重点2,递归方法的返回值问题。改写setChild()方法

        
        public void setChild(TreeNode treeNode, List<Qydy> list ){
            List<TreeNode> childList = new ArrayList<>();
            for (Qydy qydy : list) {
                TreeNode treeNode = new TreeNode();
                if (treeNode.getId()!=null &&treeNode.getId().equals(qydy.getQYDY_PPKID())){
                    treeNode.setId(qydy.getQYDY_PKID());
                    treeNode.setText(qydy.getQYMC());
                    treeNode.setParentId(id);
                    treeNode.setState("close");
                    treeNode.setAttributes(qydy);
                    childList.add(treeNode);
                }
            }
            treeNode.setChildren(childList)
            for (TreeNode department : childList) {
                List<TreeNode> treeNodes = setChild(department, list);
                if (treeNodes.size()>=1){
                    department.setState("close");
                }
                department.setChildren(treeNodes);
            }
        }  
    

      

  • 相关阅读:
    java中文api 安装和引入eclipse
    【JAVA学习笔记】Java中的static关键字解析
    终于做好了JDBC在java和sql 2005之间的连接了 ,快哭了
    CF 5 A. Chat Server's Outgoing Traffic
    NYOJ 16 矩形嵌套
    poj 1061 青蛙的约会
    nefu 2 猜想
    nefu 120 梅森素数
    nefu 118 n!后面有多少个0
    nefu 117 素数个数的位数
  • 原文地址:https://www.cnblogs.com/yanxiaoge/p/14706806.html
Copyright © 2020-2023  润新知