我就废话不多说了,⼤家还是直接看代码吧~
private boolean contains(List if (child.getName().equals(value) || (child.getChildren().size() > 0 && contains(child.getChildren(), value))) { return true; } } return false; } 补充知识:java树形结构根据⽗级节点获取其下⾯的所有最底层的根节点数据 因⼯作中需要根据任意⽗级节点查找到树形节点下的根节点信息,所以写了下⾯⼀个demo⽅便⾃⼰需要时的查看以及需要的⼈参考⼀共两个类 TreeNode 使⽤了lombok插件TreeNodeTest 主要的逻辑都在TreeNodeTest中 如果有错误的地⽅,还望留⾔评论,感谢TreeNode @Data @AllArgsConstructorpublic class TreeNode { /** * 节点ID **/ private String id; /** * ⽗级ID **/ private String parentId; /** * 节点名称 **/ private String name;} TreeNodeTest /** * 测试类 * 此⽅法建议数据量少的情况使⽤ 或者 此数据很少变动并且加⼊到缓存中*/ public class TreeNodeTest { public static void main(String[] args) { /** * 0 * / \\ * 123 130 * / \\ / \\ * 124 125 131 132 * / \\ / \\ / \\ / \\ * 126 127 128 129 133 134 135 136 * 只⽀持 节点路径长度必须⼀致的情况下才可以 * 此Demo可以实现 根据0 获取到[126 127 128 129 133 134 135 136] * 根据123 获取到[126 127 128 129] * 注:⽐如 126 127节点没有 此时获取到的0根节点 就会出现 [124 128 129 133 134 135 136] */ TreeNode treeNode = new TreeNode(\"123\北京\"); TreeNode treeNode1 = new TreeNode(\"124\丰台区\"); TreeNode treeNode2 = new TreeNode(\"125\海淀区\"); TreeNode treeNode3 = new TreeNode(\"126\丰台区丰台科技园\"); TreeNode treeNode4 = new TreeNode(\"127\丰台区丰台南路\"); TreeNode treeNode5 = new TreeNode(\"128\海淀区中关村\"); TreeNode treeNode6 = new TreeNode(\"129\海淀区海淀公园\"); TreeNode treeNode7 = new TreeNode(\"130\上海\"); TreeNode treeNode8 = new TreeNode(\"131\徐汇区\"); TreeNode treeNode9 = new TreeNode(\"132\虹⼝区\"); TreeNode treeNode10 = new TreeNode(\"133\徐汇区龙华寺\"); TreeNode treeNode11 = new TreeNode(\"134\徐汇区天主教堂\"); TreeNode treeNode12 = new TreeNode(\"135\虹⼝区虹⼝⾜球场\"); TreeNode treeNode13 = new TreeNode(\"136\虹⼝区鲁迅公园\"); List // 按照⽗级ID分组 Map Set // 取出顶级数据(也就是⽗级ID为0的数据 当然顶层的⽗级ID也可以⾃定义 这⾥只是演⽰ 所以给了0) List for(TreeNode node : topTreeNodes){ getMinimumChildIdArray(groupByParentIdMap,node.getId(),topToLowerChildIdSet); } System.out.println(\"0节点下所有的根节点数据集合:\" + topToLowerChildIdSet.toString()); } /** * 根据⽗级节点获取最低层次 那⼀级的节点数据 * 1 * / \\ * 2 3 * / \\ / \\ * 4 5 6 7 * 上⾯的树形结构调⽤此⽅法 根据1 可以获取到 [4 5 6 7] * 根据3 可以获得到 [6 7] * @param groupByParentIdMap 所有的元素集合(根据⽗级ID进⾏了分组) 分组⽅法可以使⽤lambda 如下: * Map * @param topToLowerChildIdSet 存储最深根节点的数据集合 */ public static Set Set List for(TreeNode treeNode : childTreeNodes){ Set // 如果返回null 表⽰当前遍历的treeNode节点为最底层的节点 currentPidLowerChildIdSet.add(treeNode.getId()); } } System.out.println(\"当前⽗级ID:\"+ pid + \"下所有的根节点数据:\" + currentPidLowerChildIdSet.toString()); // 把当前获取到的根节点数据 ⼀并保存到上⼀个节点⽗级ID集合中 topToLowerChildIdSet.addAll(currentPidLowerChildIdSet); return currentPidLowerChildIdSet; }} 运⾏后的结果: 以上这篇Java Tree结构数据中查找匹配节点⽅式就是⼩编分享给⼤家的全部内容了,希望能给⼤家⼀个参考,也希望⼤家多多⽀持。 因篇幅问题不能全部显示,请点此查看更多更全内容