问题描述
求Java List 递归 算法:通过方法取得的List(myList)结构如下:id name parentId1 AA null2 BB 13 CC 14 DD 25 EE 26 FF 4想要一个递归方法,以myList为参数,最后返回一个List,能够遍历出如下树的结构:AA--BB----DD------FF----EE--CCFormBean:String id;String name;String parentId; 问题补充:实际上,我要的树的结构是要在部门名的下拉列表中显示,id,name,parentId对应部门表的三个字段,我用的是Struts2,在Action中得到部门的List(myList)后,不知道怎么样能把这个List通过一个方法,形成一个树的结构的List,然后再在页面上遍历,所以才提出此问题。
解决方案
LZ的可能直接由数据库里取的数据吧,可以参考下面的方法: public void toList(List src, List target,String parentId){ for(FormBean b:src){ if ((parentId==null && b.getParentId()==null) || (parentId!=null && parentId.equals(b.getParentId()))){ target.add(b); toList(src,target,b.getId()); } } }使用: ... target=new ArrayList<FormBean>(); toList(src,target,null);
解决方案二:
个人觉得你的bean的结构有问题:FormBean { private FormBean parent; private List<FormBean> childs; private String id; private String name; private void addChild(FormBean child) { child.setParent(this); this.childs.add(child); }}这样的一个结构代表一个树, 将会只是一个FormBean, 从这个FormBean可以拿到childs, 每个child还可以再拿childs. 这样比较好代表一个树.