将Java中的路径排序为层次结构

将Java中的路径排序为层次结构,java,path,hierarchy,Java,Path,Hierarchy,我有一个n个路径的列表,我想用它们创建一个层次结构(带有对象的树结构) 例如。 路径: /src/main/java/tools/mockfile/generator/data/RecordPart.java /src/main/java/tools/mockfile/generator/Analyzer.java /src/main/java/tools/mockfile/test/Menu.java ... 小层次结构: mockfile ├── generator │

我有一个n个路径的列表,我想用它们创建一个层次结构(带有对象的树结构)

例如。 路径:

/src/main/java/tools/mockfile/generator/data/RecordPart.java
/src/main/java/tools/mockfile/generator/Analyzer.java
/src/main/java/tools/mockfile/test/Menu.java
...
小层次结构:

 mockfile
    ├── generator
    │   ├── data
    │   │   └── RecordPart.java
    │   └── Analyzer.java   
    └── test
        ├── Menu.java
        └── ...
是否有任何库或方法可以帮助我对层次结构的路径进行排序?
还是分割字符串、比较所有部分并构建我自己的层次结构的唯一方法?

如果您希望创建和操作树结构,则特设库是Jgrapht

您可以使用嵌套的
映射作为树,将字符串映射到其他嵌套映射。您可以定义一个帮助器类来正确获取类型信息:

class Tree extends HashMap<String, Tree> {}
Tree tree = new Tree();
之后,
如下所示(请注意,根是空字符串):


或者,您可以为文件(叶子)设置
null
,而不是另一个空的

您的意思是打印层次结构?或者用对象创建某种树结构?Jep我的意思是创建一种树结构应该能够使用java.io.File类做到这一点:@MichaelMarkidis我没有本地文件,只有一个带有路径的列表
List<String> paths = Arrays.asList(
        "/src/main/java/tools/mockfile/generator/data/RecordPart.java",
        "/src/main/java/tools/mockfile/generator/Analyzer.java",
        "/src/main/java/tools/mockfile/test/Menu.java");

for (String path : paths) {
    Tree node = tree;
    for (String segment : path.split("/")) {
        node = node.computeIfAbsent(segment, s -> new Tree());
    }
}
 {={src={main={java={tools={mockfile={test={Menu.java={}},
                                      generator={data={RecordPart.java={}}, 
                                                 Analyzer.java={}}}}}}}}}