树形结构地柜查询子节点

来源:互联网 发布:怎么检查网络被盗用 编辑:程序博客网 时间:2024/05/02 22:24
package com.iflytek.icourt.model.response;

 

import java.util.ArrayList;
import java.util.List;

 
public class CaseAllMenus {
    private String name;
    private int level;
    private String code;
    private String parentCode;
    private String folderName;
    private boolean leaf = true;
    private int edFolderId;
    private int isLable;
    private int isSemantics;

    public int getEdFolderId() {
        return edFolderId;
    }

    public void setEdFolderId(int edFolderId) {
        this.edFolderId = edFolderId;
    }

    public int getIsLable() {
        return isLable;
    }

    public void setIsLable(int isLable) {
        this.isLable = isLable;
    }

    public int getIsSemantics() {
        return isSemantics;
    }

    public void setIsSemantics(int isSemantics) {
        this.isSemantics = isSemantics;
    }

    private List<CaseAllMenus> childList  = new  ArrayList<CaseAllMenus>();

    public boolean isLeaf() {
        return leaf;
    }

    public void setLeaf(boolean leaf) {
        this.leaf = leaf;
    }

 

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getLevel() {
        return level;
    }

    public void setLevel(int level) {
        this.level = level;
    }

    public String getCode() {
        return code;
    }

    public void setCode(String code) {
        this.code = code;
    }

    public String getParentCode() {
        return parentCode;
    }

    public void setParentCode(String parentCode) {
        this.parentCode = parentCode;
    }

    public String getFolderName() {
        return folderName;
    }

    public void setFolderName(String folderName) {
        this.folderName = folderName;
    }

    public List<CaseAllMenus> getChildList() {
        return childList;
    }

    public void setChildList(List<CaseAllMenus> childList) {
        this.childList = childList;
    }

    @Override
    public String toString() {
        return "CaseAllMenus [name=" + name + ", level=" + level + ", code="
                + code + ", parentCode=" + parentCode + ", folderName="
                + folderName + ", leaf=" + leaf + ", edFolderId=" + edFolderId
                + ", isLable=" + isLable + ", isSemantics=" + isSemantics
                + ", childList=" + childList + "]";
    }

}






package com.iflytek.icourt;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

import com.iflytek.icourt.model.response.CaseAllMenus;
 
 
/**
 * 获取子节点
 */
public class CopyOfSuper3 {
     
     
    /**
     * 根据父节点的ID获取所有子节点
     * @param list 分类表
     * @param typeId 传入的父节点ID
     * @return String
     */
    public String getChildNodes(List<CaseAllMenus> list) {
        List<CaseAllMenus> returnList = new ArrayList<CaseAllMenus>();
        for(CaseAllMenus menus: list){
              if (menus.getParentCode().equals("0")) {
                  returnList.add(menus);
                  recursionFn(list, menus);
              }
        }
        return returnList.toString();
    }
     
   
    private void recursionFn(List<CaseAllMenus> list, CaseAllMenus node) {
        List<CaseAllMenus> childList = getChildList(list, node);// 得到子节点列表
        if (hasChild(list, node)) {// 判断是否有子节点
            node.setChildList(childList);
            for(CaseAllMenus caseAllMenus:childList){
                recursionFn(list, caseAllMenus);
            }
        }
         
    }
     
    // 得到子节点列表
    private List<CaseAllMenus> getChildList(List<CaseAllMenus> list, CaseAllMenus node) {
        List<CaseAllMenus> nodeList = new ArrayList<CaseAllMenus>();
        for(CaseAllMenus  allMenus  :list){
             if (allMenus.getParentCode().equals(node.getCode())) {
                 nodeList.add(allMenus);
             }
        }
        return nodeList;
    }
 
    // 判断是否有子节点
    private boolean hasChild(List<CaseAllMenus> list, CaseAllMenus node) {
        return getChildList(list, node).size() > 0 ? true : false;
    }
     
     
    // 本地模拟数据测试
    public static void main(String[] args) {
        long start = System.currentTimeMillis();
        List<CaseAllMenus> nodeList = new ArrayList<CaseAllMenus>();
        CaseAllMenus menus  = new  CaseAllMenus();
        menus.setParentCode("0");
        menus.setCode("1005");
        menus.setName("原告送达地址确认书");
        
        CaseAllMenus menus6  = new  CaseAllMenus();
        menus6.setParentCode("0");
        menus6.setCode("17");
        menus6.setName("原告");
        
        CaseAllMenus menus4  = new  CaseAllMenus();
        menus4.setParentCode("1005");
        menus4.setCode("12");
        menus4.setName("原告送达地址确认书_3");
        
        
        CaseAllMenus menus1  = new  CaseAllMenus();
        menus1.setParentCode("1005");
        menus1.setCode("14");
        menus1.setName("原告送达地址确认书_1");
        
 
        
        CaseAllMenus menus2  = new  CaseAllMenus();
        menus2.setParentCode("1005");
        menus2.setCode("13");
        menus2.setName("原告送达地址确认书_2");
        
        CaseAllMenus menus3  = new  CaseAllMenus();
        menus3.setParentCode("14");
        menus3.setCode("17");
        menus3.setName("原告送达地址确认书_1_1");
        
        CaseAllMenus menus5  = new  CaseAllMenus();
        menus5.setParentCode("14");
        menus5.setCode("16");
        menus5.setName("原告送达地址确认书_1_2");
        
        
        nodeList.add(menus3);
        nodeList.add(menus2);
        nodeList.add(menus1);
        nodeList.add(menus);
        nodeList.add(menus4);
        nodeList.add(menus5);
        nodeList.add(menus6);
         
        CopyOfSuper3 mt = new CopyOfSuper3();
        System.out.println(mt.getChildNodes(nodeList));
        long end = System.currentTimeMillis();
        System.out.println("用时:" + (end - start) + "ms");
    }
 }


阅读全文
0 0
原创粉丝点击