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