求Java List 递归 算法

求Java List 递归 算法:

通过方法取得的List(myList)结构如下:

id name parentId
1 AA null
2 BB 1
3 CC 1
4 DD 2
5 EE 2
6 FF 4

想要一个递归方法,以myList为参数,最后返回一个List,能够遍历出如下树的结构:

AA
--BB
----DD
------FF
----EE
--CC

FormBean:
String id;
String name;
String parentId;
[b]问题补充:[/b]
实际上,我要的树的结构是要在部门名的下拉列表中显示,id,name,parentId对应部门表的三个字段,我用的是Struts2,在Action中得到部门的List(myList)后,不知道怎么样能把这个List通过一个方法,形成一个树的结构的List,然后再在页面上遍历,所以才提出此问题。

LZ的可能直接由数据库里取的数据吧,可以参考下面的方法:
[code="java"]
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());
}
}
}
[/code]

使用:
[code="java"]
...
target=new ArrayList();
toList(src,target,null);
[/code]

个人觉得你的bean的结构有问题:

[code="java"]FormBean {
private FormBean parent;
private List childs;

private String id;
private String name;

private void addChild(FormBean child) {
child.setParent(this);
this.childs.add(child);
}

}[/code]

这样的一个结构代表一个树, 将会只是一个FormBean, 从这个FormBean可以拿到childs, 每个child还可以再拿childs. 这样比较好代表一个树.