gpt4 book ai didi

Java:将字符串变成树

转载 作者:行者123 更新时间:2023-12-03 22:15:35 25 4
gpt4 key购买 nike

我有一个排序的字符串列表,它们是目录,我需要将其显示为树。

例如,如果我有这些字符串:

"folder a/folder b/file 1"
"folder a/folder b/file 2"
"folder a/folder c"

我需要将它们显示为:

folder a
|- folder b
| |- file 1
| |- file 2
|- folder c

我目前正在考虑遍历列表并跟踪“父文件夹”(即第一个字符串的“文件夹 a/文件夹 b”)并根据“父文件夹”是否是相同的。返回父文件夹似乎很复杂,我想知道是否有人可以推荐一种更简单/更有效的方法?

首先遍历字符串并实际构建一棵树,然后在显示它之前遍历该树是否有帮助?可能值得注意的是,所有数据都保存为字符串(不会保存此树),因此这需要我在每次要显示它时构建树数据结构。

最佳答案

希望对您有所帮助。构建目录的整个结构。 Sry 短名称和缺乏泛型。希望它更具可读性。

public static void main(String[] args) {
ArrayList<String> listOfPaths = new ArrayList<String>();
listOfPaths.add("folder a/folder b/file 1");
listOfPaths.add("folder a/folder b/file 2");
listOfPaths.add("folder a/folder c");

TreeMap structure = new TreeMap();
for (String path : listOfPaths) {
String[] tmp = path.split("/", 2); // [ "folder a/", "folder b/file 1"] for first loops step
put(structure, tmp[0], tmp[1]);
}

print(structure, "");
}
private static void put(TreeMap structure, String root, String rest) {
String[] tmp = rest.split("/", 2);

TreeMap rootDir = (TreeMap) structure.get(root);

if (rootDir == null) {
rootDir = new TreeMap();
structure.put(root, rootDir);
}
if (tmp.length == 1) { // path end
rootDir.put(tmp[0], null);
} else {
put(rootDir, tmp[0], tmp[1]);
}
}
private static void print(TreeMap map, String delimeter) {
if (map == null || map.isEmpty())
return;
for (Object m : map.entrySet()) {
System.out.println(delimeter + "-" + ((Map.Entry)m).getKey());
print((TreeMap)((Map.Entry)m).getValue(), " |" + delimeter);
}
}

关于Java:将字符串变成树,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9084094/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com