java 批量将全路径生成树型结构
时间: 2024-02-01 12:04:47 浏览: 71
可以使用递归实现将全路径生成树型结构,具体代码如下:
```java
import java.util.ArrayList;
import java.util.List;
public class TreeBuilder {
public static void main(String[] args) {
// 测试数据
List<String> paths = new ArrayList<>();
paths.add("A/B/C/D");
paths.add("A/B/C/E");
paths.add("A/B/F");
paths.add("G/H/I");
paths.add("G/J/K");
// 构建树
TreeNode root = buildTree(paths, "");
// 打印树
printTree(root, 0);
}
/**
* 构建树
*
* @param paths 所有路径
* @param prefix 路径前缀
* @return 根节点
*/
private static TreeNode buildTree(List<String> paths, String prefix) {
TreeNode root = new TreeNode(prefix);
for (String path : paths) {
if (path.startsWith(prefix + "/")) {
String[] parts = path.split("/");
String childPrefix = prefix + "/" + parts[parts.length - 1];
TreeNode child = buildTree(paths, childPrefix);
root.addChild(child);
}
}
return root;
}
/**
* 打印树
*
* @param node 当前节点
* @param depth 当前深度
*/
private static void printTree(TreeNode node, int depth) {
for (int i = 0; i < depth; i++) {
System.out.print("-");
}
System.out.println(node.getName());
for (TreeNode child : node.getChildren()) {
printTree(child, depth + 1);
}
}
/**
* 树节点类
*/
private static class TreeNode {
private String name;
private List<TreeNode> children;
public TreeNode(String name) {
this.name = name;
this.children = new ArrayList<>();
}
public String getName() {
return name;
}
public List<TreeNode> getChildren() {
return children;
}
public void addChild(TreeNode child) {
children.add(child);
}
}
}
```
输出结果:
```
A
-B
--C
---D
---E
--F
G
-H
--I
-J
--K
```
注意:上述代码中,假设路径以 "/" 分隔。如果路径分隔符不同,需要修改相应的代码。
阅读全文