有一个表示“组”的JavaBeanpublic class Group{
    private String id;
    private String parentId;//父ID
    public String getId(){return id;}
    public void setId(String id){this.id=id;}
    public String getParentId(){return parentId;}
    public void setParentId(String parentId){this.parentId=parentId;}
}
把若干个这样的JavaBean放入一个ArrayList<Group>里
现在我想写一个递归方法,传入一个参数id,也就是一个组的id,然后遍历这个list,返回这个组的所有子组,以及子组的子组,也就是说返回所给组的所有子孙这个算法应该怎么写?请大侠们指教!

解决方案 »

  1.   

    不喜欢用String做id所以改了. 不好意思.import java.util.ArrayList;
    import java.util.List;public class Test
    {
        public static void main(String[] args)
        {
            Group g1 = new Group(1,0);
            Group g2 = new Group(2,1);
            Group g3 = new Group(3,2);
            List<Group> list = new ArrayList<Group>();
            list.add(g1);
            list.add(g2);   
            list.add(g3);
            Test.seach(0, list);
        }
        public static void seach(Integer indexId,List<Group> list){
            for (Group group : list)
            {
                if(group.getParentId() == indexId){
                    System.out.println(group.getId());
                    seach(group.getId(), list);
                }
            }
        }
    }class Group{
        private Integer id;
        private Integer parentId;//父ID
        public Group(Integer id, Integer parentId)
        {
            this.id  = id;
            this.parentId = parentId;
        }
        public Integer getId()
        {
            return id;
        }
        public void setId(Integer id)
        {
            this.id = id;
        }
        public Integer getParentId()
        {
            return parentId;
        }
        public void setParentId(Integer parentId)
        {
            this.parentId = parentId;
        }
       
    }
      

  2.   

    如果有什么问题,请为我csdn留言
      

  3.   

    一楼的是正解,
    主要是查group的parentid有没有等于其他group的id,有的话就开始递归,终止条件当然就是parentid不等于其他的id