循环实现递归
2013-04-25 01:19
302 查看
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;
}
}
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;
}
}
相关文章推荐
- 摘要:我们经常会用到递归函数,但是如果递归深度太大时,往往导致栈溢出。而递归深度往往不太容易把握,所以比较安全一点的做法就是:用循环代替递归。文章最后的原文里面讲了如何用10步实现这个过程,相当精彩。本文翻译了这篇文章,并加了自己的一点注释和理解。
- 裴波那契数列(循环实现递归)
- 归并排序算法 递归及循环实现
- 斐波那契数列的递归,迭代(循环),通项公式三种实现
- 二分查找的两种实现(循环与递归)
- 用递归实现循环
- leetcode笔试题二叉树的前序、中序、后序遍历的递归和循环c++实现
- 经典面试题:二输入一颗二元查找树,得到树的镜像(递归和循环实现)
- 二叉树的后序遍历,递归实现与循环实现
- 链表逆序的循环实现和递归实现
- 在论坛中出现的比较难的sql问题:28(循环查询表来实现递归)
- 二分查找法(递归与循环实现)
- 带头节点链表的反转 循环和递归 C#实现
- PHP实现字符串翻转功能的方法【递归与循环算法】
- java实现八皇后问题(递归和循环两种方式)
- JAVA使用循环和递归方法实现斐波拉切数列
- PHP实现等差数列求和(不使用乘法,循环,递归)
- Finonacci sequence,斐波那契,经典的兔子繁殖,更新为兔子会死,通项推导,循环,递归,dp实现
- 二叉树的先序遍历,递归实现与循环实现
- 通过递归实现嵌套未知次数的循环