-
递归查询出树形结构
public class TreeNodeDTO { private String id; private String parentId; private String name; private List
children = new ArrayList<>(); public void add(TreeNodeDTO node) { if ("0".equals(node.parentId)) { this.children.add(node); } else if (node.parentId.equals(this.id)) { this.children.add(node); } else { //递归调用add()添加子节点 for (TreeNodeDTO tmp_node : children) { tmp_node.add(node); } } } } -
通过hashMap,只需要遍历一次,就可以完成树的生成
List
list = dbMapper.getNodeList(); ArrayList rootNodes = new ArrayList<>(); Map map = new HashMap<>(); for (TreeNodeDTO node :list) { map.put(node.getId(), node); Integer parentId = node.getParentId(); // 判断是否有父节点 (没有父节点本身就是个父菜单) if (parentId.equals('0')){ rootNodes.add(node); // 找出不是父级菜单的且集合中包括其父菜单ID } else if (map.containsKey(parentId)){ map.get(parentId).getChildren().add(node); } }
文章评论