循环实现递归

import java.io.File;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;

import net.sf.json.JSONObject;

public class Test2 {

    /**
     * @param args
     */
    public static void main(String[] args) {

        StringBuffer sbf=new StringBuffer();
        sbf.append("{");
        sbf.append("\"var\":");
        sbf.append("{");
          sbf.append("\"deptList\":");
             sbf.append("[");
             sbf.append("{");
                    sbf.append("\"id\":\"3\"").append(",");
                   sbf.append("\"name\":\"邮件系统开发部2\"").append(",");
                   
                   sbf.append("\"deptList\":");
                     sbf.append("[");
                       sbf.append("{");
                          sbf.append("\"id\":\"5\"").append(",");
                          sbf.append("\"name\":\"企业邮箱\"").append(",");
                          sbf.append("\"deptList\":");
                             sbf.append("[");
                               sbf.append("{");
                                  sbf.append("\"id\":\"6\"").append(",");
                                  sbf.append("\"name\":\"企业邮箱1\"");
                               sbf.append("},");
                               sbf.append("{");
                                  sbf.append("\"id\":\"7\"").append(",");
                                  sbf.append("\"name\":\"企业邮箱2\"").append(",");
                                  
                                  
                                  sbf.append("\"deptList\":");
                                  sbf.append("[");
                                      sbf.append("{");
                                      sbf.append("\"id\":\"8\"").append(",");
                                  sbf.append("\"name\":\"企业邮箱3\"").append(",");
                                  
                                  sbf.append("\"deptList\":");
                                  sbf.append("[");
                                      sbf.append("{");
                                      sbf.append("\"id\":\"9\"").append(",");
                                  sbf.append("\"name\":\"企业邮箱4\"");
                               sbf.append("}");
                                  sbf.append("]");
                                  
                               sbf.append("}");
                                  sbf.append("]");
                                  
                               sbf.append("}");
                             sbf.append("]");
                       sbf.append("}");
                     sbf.append("]");
             sbf.append("}").append(",");
             
             sbf.append("{");
             sbf.append("\"id\":\"4\"").append(",");
             sbf.append("\"name\":\"平台开发部(pingtai)2\"");
             sbf.append("}").append(",");
             
             sbf.append("{");
             sbf.append("\"id\":\"5\"").append(",");
             sbf.append("\"name\":\"测试部\"").append(",");
             
             sbf.append("\"deptList\":");
             sbf.append("[");
                 sbf.append("{");
                 sbf.append("\"id\":\"6\"").append(",");
             sbf.append("\"name\":\"测试部1\"");
          sbf.append("}");
             sbf.append("]");
             
             sbf.append("}");
             
             sbf.append("]");
        sbf.append("}");
        
        sbf.append("}");
        System.out.println(sbf.toString());
        
        Map<String, Class> classMap = new HashMap<String, Class>();
        classMap.put("deptList", Dept.class);
        classMap.put("dept", Dept.class);
        Res  resJson = (Res) JSONObject.toBean(getJsonObj(sbf.toString()), Res.class,classMap);
        
        System.out.println(resJson.getVar().getDeptList());
        List<Dept> lists=resJson.getVar().getDeptList();
        
        long a = System.currentTimeMillis();

        LinkedList list = new LinkedList();
        
        for (int i = 0; i < lists.size(); i++) {
            
            if(lists.get(i)!=null)
            {
                list.add(lists.get(i));
            }
        }
        
        Dept tmp;
        while (!list.isEmpty()) {
        
                tmp = (Dept) list.removeFirst();
                System.out.println("id:"+tmp.getId()+" name:"+tmp.getName());
                if(tmp.getDeptList()!=null)
                {
                    if (tmp.getDeptList().size()>0) {
                        List<Dept> file = tmp.getDeptList();
                        if (file == null)
                            continue;
                        for (int i = 0; i < file.size(); i++) {
                            if (file.size()>0)
                            {
                                list.add(file.get(i));
                            }
                            
                            else
                            {
                                System.out.println(file.get(i).getName());
                            }
                                
                        }
                    } else {
                        System.out.println(tmp.getName());
                    }
            }
        
        }

        System.out.println(System.currentTimeMillis() - a);
    }

    public static JSONObject getJsonObj(String jsonStr)
    {
        
        return JSONObject.fromObject(jsonStr);
    } 

}


package com.ad.web.webmail.departUser.rmapi;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;

import org.apache.log4j.Logger;

import com.ad.web.webmail.departUser.pojo.request.Depart;
import com.ad.web.webmail.departUser.pojo.request.DepartUserfilterChar;
import com.ad.web.webmail.departUser.pojo.request.TreeBean;
import com.ad.web.webmail.departUser.pojo.request.UserInfo;
import com.ad.web.webmail.departUser.pojo.response.SellMalResp;
import com.ad.web.webmail.departUser.pojo.response.User;



/**
 * 装请求数据封装成返回格式数据
 *
 * @author zxkj
 *
 */
public class DepartUserProccess
{

    private static final Logger log = Logger.getLogger(DepartUserProccess.class);
    
    public static SellMalResp doAllDeptProcess(TreeBean treebean)
    {
        SellMalResp sellmalResp=new SellMalResp();
        try
        {
            // 3.从treebean里拿到所有的人员信息
            List<User> users=getAllUsers(treebean,2);
            
            // 1.从treebean里拿到所有部门信息
            List<User> dept = getDepts(treebean,1);
        
            
            List<User> dept_temp =new ArrayList<User>();
            if(dept!=null)
            {
                for(int i=0;i<dept.size();i++)
                {
                    dept_temp.add(dept.get(i));
                }
            }
            if(users!=null)
            {
                for(int k=0;k<users.size();k++)
                {
                    dept_temp.add(users.get(k));
                }
            }

            sellmalResp.setCode("S_OK");
            sellmalResp.setVar(dept_temp);
        }
        catch(Exception e)
        {
            log.error("doAllDeptProcess is error:",e);
            sellmalResp.setCode("ERROR");
            return sellmalResp;
        }
        
        return sellmalResp;
        
    }

    /**
     * 得到所有人员信息
     * @param treebean
     * @return
     */
    @SuppressWarnings("unchecked")
    public static List<User> getAllUsers(
            TreeBean treebean,int type)
    {
        // 保存所有返回给客户端部门信息
        List<User> usersList = new ArrayList<User>();
        try
        {
            // 得到treebean中所有一级部门
            List<Depart> departList =null;
            
            if(treebean.getVar()!=null)
            {
                departList = treebean.getVar().getDeptList();
            }
            
            // 得到treebean中所有无部门人员信息
            List<UserInfo> users = null;
            if(treebean.getVar()!=null)
            {
                users = treebean.getVar().getUserList();
            }
            // 将所treebean中所有无部门的信息转为
            if(users!=null)
            {
                for (int i = 0; i < users.size(); i++)
                {
                    User u1 = new User();
                    u1.setEmail(DepartUserfilterChar.UserfilterChar(users.get(i).getEmail()));
                    u1.setId( users.get(i).getId());
                    u1.setName(DepartUserfilterChar.UserfilterChar(users.get(i).getFirstName()));
                    u1.setParentId(Long.valueOf("0"));
                    u1.setType(type);
                    usersList.add(u1);
                }
            }
    
            // 得到所有部门下所属部门信息,并保存为resmail类型
            LinkedList quelist = new LinkedList();
            List<Depart> deptList = new ArrayList<Depart>();
            
            if(departList!=null)
            {
                for (int i = 0; i < departList.size(); i++)
                {
                    deptList.add(departList.get(i));
                    quelist.add(departList.get(i));
                }
            }
            
            Depart tmp;
             while (!quelist.isEmpty()) {
                    
                   tmp = (Depart) quelist.removeFirst();
                 
                   if(tmp.getDeptList()!=null)
                   {
                      
                           List<Depart> childDepart = tmp.getDeptList();
                         
                           for (int i = 0; i < childDepart.size(); i++)
                           {
                               deptList.add(childDepart.get(i));
                               quelist.add(childDepart.get(i));
                                                   
                           }
                    }
                       
               }
            
             for(int k=0;k<deptList.size();k++)
             {
                
                Depart dpart_inf =deptList.get(k);
                
                List<UserInfo> d_user=    dpart_inf.getUserList();
                if(d_user!=null)
                {
                    for(int n=0;n<d_user.size();n++)
                    {
                        
                        User u1 = new User();
                        u1.setEmail(DepartUserfilterChar.UserfilterChar(d_user.get(n).getEmail()));
                        u1.setId( d_user.get(n).getId());
                        u1.setName(DepartUserfilterChar.UserfilterChar(d_user.get(n).getFirstName()));
                        u1.setParentId(dpart_inf.getId());
                        u1.setType(type);
                        usersList.add(u1);
                    }
                }
                
             }
            
        
        }
        catch(Exception e)
        {
            log.error("getAllUsers is error",e);
            return usersList;
        }
        return usersList;
    }


    
    /**
     * 得到所有部门信息转换为返回给前端的数据格式
     */
    @SuppressWarnings("unchecked")
    public static List<User> getDepts(TreeBean treebean,int type)
    {
        LinkedList quelist = new LinkedList();
        List<User> deptList = new ArrayList<User>();
        try
        {
            List<Depart> departList =null;
            if( treebean.getVar()!=null)
            {
                departList = treebean.getVar().getDeptList();
            }
    
            
            if(departList!=null)
            {
                for (int i = 0; i < departList.size(); i++)
                {
                    
                    Depart depart = departList.get(i);
                    User dept = new User();
                    dept.setEmail("");
                    dept.setId(depart.getId());
                    dept.setName(DepartUserfilterChar.UserfilterChar(depart.getName()));
                    dept.setType(type);
                    dept.setParentId(Long.valueOf("0"));
                    deptList.add(dept);    
                    quelist.add(depart);
                    
            
                }
            }
            
            
            Depart tmp;
             while (!quelist.isEmpty()) {
                    
                   tmp = (Depart) quelist.removeFirst();
                 
                   if(tmp.getDeptList()!=null)
                   {
                       
                           List<Depart> childDept = tmp.getDeptList();
                           for (int i = 0; i < childDept.size(); i++) {
                             
                            User dept = new User();
                               dept.setEmail("");
                               dept.setId(childDept.get(i).getId());
                               dept.setName(DepartUserfilterChar.UserfilterChar(childDept.get(i).getName()));
                               dept.setType(type);
                               dept.setParentId(tmp.getId());
                               deptList.add(dept);    
                               quelist.add(childDept.get(i));
                                                   
                           }
                 }
          }
        }
        catch(Exception e)
        {
            log.error("getDepts is error",e);
            return deptList;
        }
        
        return deptList;
    }

}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值