java递归构建菜单树

 1 package testSimple;
 2 
 3 import java.util.ArrayList;
 4 import java.util.List;
 5 
 6 public class BuildTree {
 7     public static void main(String[] args) {
 8         List<Tree> list = new ArrayList<Tree>();
 9         list.add(new Tree(1, "一级菜单", 0));
10         list.add(new Tree(2, "二级菜单1", 1));
11         list.add(new Tree(3, "二级菜单2", 1));
12         list.add(new Tree(4, "二级菜单3", 1));
13         list.add(new Tree(5, "三级菜单11", 2));
14         list.add(new Tree(6, "三级菜单12", 2));
15         list.add(new Tree(7, "三级菜单21", 3));
16         list.add(new Tree(8, "三级菜单22", 3));
17         list.add(new Tree(9, "三级菜单31", 4));
18         list.add(new Tree(10, "三级菜单32", 4));
19 
20         List<Tree> result = buildTree(list, 0);
21         System.out.println(result);
22     }
23 
24     public static List<Tree> buildTree(List<Tree> list, int fid) {
25         List<Tree> resultList = new ArrayList<Tree>();
26         if (list == null || list.size() == 0 || fid < 0) {
27             return null;
28         }
29         for (Tree tree : list) {
30             if (tree.getFid() == fid) {
31                 resultList.add(tree);
32                 tree.setChildren(buildTree(list, tree.getId()));
33             }
34         }
35         return resultList;
36     }
37 
38 }
39 
40 class Tree {
41     private int id;
42     private String name;
43     private int fid;
44     private List<Tree> children;
45 
46     public Tree(int id, String name, int fid) {
47         super();
48         this.id = id;
49         this.name = name;
50         this.fid = fid;
51     }
52 
53     public int getId() {
54         return id;
55     }
56 
57     public void setId(int id) {
58         this.id = id;
59     }
60 
61     public String getName() {
62         return name;
63     }
64 
65     public void setName(String name) {
66         this.name = name;
67     }
68 
69     public int getFid() {
70         return fid;
71     }
72 
73     public void setFid(int fid) {
74         this.fid = fid;
75     }
76 
77     public List<Tree> getChildren() {
78         return children;
79     }
80 
81     public void setChildren(List<Tree> children) {
82         this.children = children;
83     }
84 
85 }
原文地址:https://www.cnblogs.com/cxxjohnson/p/7308312.html