`
learnmore
  • 浏览: 588949 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

树结构备份

    博客分类:
  • jsp
阅读更多
//为每个树枝创建叶子结点
   
    private void createBranch(StringBuffer treeMap,int parentId,List aList)
    {
    StringBuffer separtor=new StringBuffer("");
    //跳出条件
    if(aList.size()==0)return;
    for(int i=0;i<aList.size();i++)
    {
    Map map=(HashMap)aList.get(i);
    BigDecimal parent_id=(BigDecimal)map.get("PARENT_ID");
    BigDecimal menu_level=(BigDecimal)map.get("MENU_LEVEL");
    String menu_name=(String)map.get("MENU_NAME");
    BigDecimal menu_id=(BigDecimal)map.get("MENU_ID");
    //
    //迭代格式

    if(parent_id.intValue()==parentId)
    {
    separtor=new StringBuffer("");
    //根据level级别定格式
    for(int j=0;j<menu_level.intValue();j++)
    {
    separtor.append("----");
    }
    treeMap.append("<br>"+separtor.toString()+"<input type='checkbox' name='purview' id='child_'"+parentId+">"+menu_name);
    //aList.remove(i);
      //在录入结点数据时可以提前录入结点下是否有子结点的信息,这样如果该结点下面没有子结点,就不用再去递归,可以提升效率
                        if(map.get("HAS_NEXT_NODE")==true)
{
    createBranch(treeMap,menu_id.intValue(),aList);
}
    }
    }
    }

注:假设在创建树的过程中,需要根据结点的名称去查找其他信息(比如查找结点对应的员工信息),那么我们可以先给员工按结点名称排序,这样在判断的时候不需要遍历所有的员工,而是判断该部门是否有员工,如果有,那么在查询过程中遇到一个不是该名称的员工,说明该部门的员工已经全部查询完毕,避免遍历所有的员工,提升效率。
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics