TreeNode的整体结构为:
private String id;//本节点id private String name;//本节点名称 private String parentId;//本节点的父节点 private String data;//本节点存储的其他信息 private List<TreeNode> children;//子节点
工具类如下
/** * 树数据拷贝,去掉不满足条件的叶子节点信息 * @param treeNodes * @param permissions * @return */ public static List<TreeNode> initToShowMenus(List<TreeNode> treeNodes, List<String> permissions) { List<TreeNode> newTreeNodes =new ArrayList<>(); for (TreeNode treeNode : treeNodes) { TreeNode nNode = copy(treeNode,permissions); newTreeNodes.add(nNode); } return newTreeNodes; } public static TreeNode copy(TreeNode node,List<String> permissions){ TreeNode nNode = new TreeNode(); if(node.getChildren().size() == 0 && !permissions.contains(node.getId())){ System.out.println("没有查看权限的菜单:"+node.getName()); return null; }else{ nNode.setId(node.getId()); nNode.setName(node.getName()); nNode.setParentId(node.getParentId()); nNode.setData(node.getData()); List<TreeNode> list = new ArrayList<>(); if(node.getChildren().size()>0){ for(int i =0;i<node.getChildren().size();i++){ TreeNode theNode = copy(node.getChildren().get(i),permissions); if(theNode == null){ continue; }else{ list.add(theNode); } } } nNode.setChildren(list); return nNode; } }