当前位置:编程学习 > JAVA >>

实体类中包含有自己类的集合, 利用parentid循环遍历装入以后 遍历往出取的时候里面却没东西...

package lich.sdsy.domain;

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

public class Department {
private int id;
private String dept_name;
private List<Department> deptList=new ArrayList<Department>();
private int parent_id;
}


package lich.sdsy.test;
import java.util.ArrayList;
import java.util.List;
import lich.sdsy.dao.DepartmentDao;
import lich.sdsy.dao.impl.DepartmentDaoImpl;
import lich.sdsy.domain.Department;

public class TestGrading {
int i=0;
public static void main(String[] args) {
TestGrading tg=new TestGrading();
tg.PrintDept(tg.FindChildren());

}
public List<Department> FindChildren(){
DepartmentDao deptDao=new DepartmentDaoImpl();
List<Department> dept_all=new ArrayList<Department>();
List<Department> dept_root=new ArrayList<Department>();
try {
dept_all=deptDao.findAllDepts();
System.out.println("dpet_all:"+dept_all);
dept_root=FindChildByParentId(dept_all,1);

} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

return dept_root;
}
public List<Department> FindChildByParentId(List<Department> list,int parent_id){
System.out.println("parent_id:"+parent_id);//0
List<Department> dept_children=new ArrayList<Department>();
System.out.println("new dept_children.size:"+dept_children.size());
for(Department dept:list){
System.out.println("dept.id:"+dept.getId()+",dept.parentid:"+dept.getParent_id()+",parentid"+parent_id);
if(dept.getParent_id()==parent_id){
System.out.println(i++);
System.out.println("dept.getid"+dept.getId()+",parentid"+parent_id);
dept_children.add(dept);
System.out.println("dept_chidleren.size:"+dept_children.size());
}
}
System.out.println("dept_children.size():"+dept_children.size());
if(dept_children.size()>0){
for(Department dept:dept_children){
FindChildByParentId(list, dept.getId());
}
}
return dept_children;
}
public void PrintDept(List<Department> list){
for(Department dept:list){
System.out.println("print.dept.name:"+dept.getDept_name());
System.out.println("prinat.dept.id:"+dept.getId());
List<Department> depts=dept.getDeptList();
System.out.println("print.depts.deptlist.size:"+depts.size());
// if(depts.size()>0){
// PrintDept(depts);
// }
}
}
}



sql结构:

id  deptname  parent_id;
1,a,0
2,b,1
3,c,1
4,d,1
5,e,2
6,f,2
7,g,3
8,h,4
9,i,4
--------------------编程问答-------------------- 好多好多测试语句都复制过来啦
看测试语句的话  没问题是装进去了   可是
循环往出取值时候  ept.getDeptList()就是空的.. --------------------编程问答-------------------- 找到问题了
没有把遍历做成的子集合set到父级dept里面

if(dept_children.size()>0){
for(Department dept:list){
if(dept.getId()==parent_id){
dept.setDeptList(dept_children);
}
}
for(Department dept:dept_children){
FindChildByParentId(list, dept.getId());
}
} --------------------编程问答-------------------- 取出的数据为空、一般都是塞值的时候有问题。
补充:Java ,  Java EE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,