递归算法记录

# 递归显示部门

<script>
function menuFoldClick(){
var srcE=window.event.srcElement;
var tagName=window.event.srcElement.tagName;
if(tagName=="LI"){
var nextBrother=srcE.nextSibling;
if(nextBrother.nodeType!=1){
nextBrother=nextBrother.nextSibling;
}
if(nextBrother.tagName=="UL"){
var displayCss=nextBrother.style.display;
if(displayCss=="none"){
nextBrother.style.display="";
}else{
nextBrother.style.display="none";
}
}
}
}
</script>

 

 

<ul οnclick="menuFoldClick()">

<%HashMap depMap=(HashMap)request.getAttribute("depMap"); %>
<%!public void printSubDep(JspWriter out,HashMap depMap,Integer j,Integer id){
List list2=(List)depMap.get(j);
if(list2!=null&&list2.size()>0){
try{
boolean flag=false;
for(int n=0;n<list2.size();n++){
TDepartment dep2 =(TDepartment)list2.get(n);
if(dep2.getUpDep().intValue()==id.intValue()){
flag=true;
break;
}
}
if(flag) out.print("<ul>");
int k=j;
for(int n=0;n<list2.size();n++){
TDepartment dep2 =(TDepartment)list2.get(n);
if(dep2.getUpDep().intValue()==id.intValue()){
out.print("<li>" + dep2.getDepName()
+ "</li>");
j++;
printSubDep(out,depMap,j,dep2.getId());
}
j=k;
}
if(flag) out.print("</ul>");
}catch(IOException e){
e.getStackTrace();
}
}
} %>
<%
if (depMap.size()>0) {
List depListObj = (List) depMap.get(1);
for (int j = 0; j < depListObj.size(); j++) {
TDepartment dep = (TDepartment) depListObj.get(j);
out.print("<li>" + dep.getDepName() + "</li>");
printSubDep(out,depMap,2,dep.getId());
}
}
%>
</ul>

 

# 递归查询文件夹目录(注意:需要的递归返回结果是什么,比如此处需要children的List)

public JSONObject folderTree(){
    String folderName = obtainParam("name", true);
    Iterable<FileFolder> iterable = folderService.findAll(QFileFolder.fileFolder.name.containsIgnoreCase(folderName)
    .and(QFileFolder.fileFolder.status.eq(Status.ENABLED)));
    List<FileFolder> list = CommonUtils.toList(iterable.iterator());
    List<JSONObject> finalList = new ArrayList<>();
    if(list.size()>0){
        //路径节点集合
        List<FileFolder> pathFileFolderList = new ArrayList<>();
        //获取根目录
        List<FileFolder> rootList = new ArrayList<>();
        for(FileFolder fileFolder: list){
            if(null != fileFolder){
                pathFileFolderList.add(fileFolder);
                FileFolder parent = fileFolder.getParent();
                if(null == parent) rootList.add(fileFolder);
                while (null != parent){
                    pathFileFolderList.add(parent);
                    parent = parent.getParent();
                }
            }
        }
        //从一级目录开始遍历
        for(FileFolder folder: rootList){
            if(null != folder){
                toTreeJson(folder,pathFileFolderList,finalList);
            }
        }
    }
    return formatResult(finalList);
}
public List<JSONObject> folderRecursiceTree(FileFolder folder, List<FileFolder> pathFileFolderList){
    List<JSONObject> childObjList = new ArrayList<>();
    Iterable<FileFolder> childIterable = folderService.findAll(QFileFolder.fileFolder.parent.eq(folder).and(QFileFolder.fileFolder.status.eq(Status.ENABLED)));
    List<FileFolder> childList = CommonUtils.toList(childIterable.iterator());
    if(childList.size()>0){
        for(FileFolder child:childList){
            if(null !=child){
                if(pathFileFolderList.contains(child)){
                    toTreeJson(child,pathFileFolderList,childObjList);
                }
            }
        }
    }
    return childObjList;
}
public void toTreeJson(FileFolder child, List<FileFolder> pathFileFolderList, List<JSONObject> childObjList){
    JSONObject jsonObject = new JSONObject();
    jsonObject.put("id", child.getId());
    jsonObject.put("label", child.getName());
    List<JSONObject> deep2ChildList = folderRecursiceTree(child, pathFileFolderList);
    jsonObject.put("children", deep2ChildList);
    childObjList.add(jsonObject);
}
/**
 * 检查模板父级目录递归(注意最后的addAll)
 */
public List<SvCheckItemRecordVO> recursiveRecordVOList(Map<String,Object> treeMap,List<SvCheckItemRecordVO> svCheckItemRecordVOList){
    List<SvCheckItemRecordVO> newTreeList =new LinkedList<>();
    int k=0;
    for(SvCheckItemRecordVO inRecordVO : svCheckItemRecordVOList){
        System.out.println("========="+inRecordVO.getTreeLevel()+";"+inRecordVO.getTreeName());
        String parentId = inRecordVO.getTreeParent();
        if(null!=parentId){
            System.out.println("**********"+inRecordVO.getTreeLevel()+";"+inRecordVO.getTreeName());
            if(treeMap.get(parentId)!=null){
                SvCheckItemRecordVO mapParentRecordVO = (SvCheckItemRecordVO) treeMap.get(parentId);
                mapParentRecordVO.getCheckItemRecordVOList().add(inRecordVO);
                mapParentRecordVO.setRowSpan(mapParentRecordVO.getRowSpan()+inRecordVO.getRowSpan());
                continue;
            }else {
                k=k+1;
                SvCheckItemsRecord parentRecord = svCheckItemsRecordService.selectOne(parentId);
                SvCheckItemRecordVO parentRecordVO = toSvCheckItemRecordVO(parentRecord);
                treeMap.put(parentId,parentRecordVO);
                parentRecordVO.getCheckItemRecordVOList().add(inRecordVO);
                parentRecordVO.setRowSpan(inRecordVO.getRowSpan());
                newTreeList.add(parentRecordVO);
            }
        }else {
            System.out.println("==========**********"+inRecordVO.getTreeLevel()+";"+inRecordVO.getTreeName());
            if(treeMap.get(inRecordVO.getBh())==null){
                newTreeList.add(inRecordVO);
            }
        }
    }
    if(k>0){
        newTreeList.addAll(recursiveRecordVOList(treeMap, newTreeList));
    }
    return newTreeList;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值