往往要将数据库中的菜单配置转成树形结构展示到前台,这边提供一种二维树组转树形(同事那边看来的,很好用),以供参考:
数据库 id,name,parent_id
java对象:
1. private class TreeNode{
2. private String id;
3. private String name;
4. private String parentId;
5. private List<TreeNode> children;
6.
7. // TODO getter/setter
8. }
树构造代码如下:
1. List<TreeNode> menuList = xxManager.findAllMenu();
2.
3. List<TreeNode> nodeList = new ArrayList<TreeNode>();
4. for(TreeNode node1 : menuList){
5. boolean mark = false;
6. for(TreeNode node2 : menuList){
7. if(node1.getParentId()!=null && node1.getParentId().equals(node2.getId())){
8. mark = true;
9. if(node2.getChildren() == null)
10. node2.setChildren(new ArrayList<TreeNode>());
11. node2.getChildren().add(node1);
12. break;
13. }
14. }
15. if(!mark){
16. nodeList.add(node1);
17. }
18. }
19. //转为json格式
20. String json = JSONArray.fromObject(nodeList).toString();
21. System.out.println("json:"+json);
原理如下图了: