我试图找到只给出其名称的父目录,
即我有一个目录名称,我需要找到它并返回它。
我用 ArrayList 来表示 Directory。另外,我不知道我要找的目录的深度是多少,所以我使用了递归,我只知道目录存在,我需要返回它。
我的代码是:
private static Directory getParentDirectory(String parentDirName, Directory currentDirectory, int level) {
if (currentDirectory.getName().equals(parentDirName)) {
return currentDirectory;
} else {
// Recursively search for the parent Directory
for (Entity item : currentDirectory.contents) {
if (item instanceof Directory) {
getParentDirectory(parentDirName, (Directory) item, level + 1);
}
}
}
System.out.println("Couldn't find relevant Directory!");
return currentDirectory;
}
我的问题是递归 - 我不知道为什么但是即使遇到第一个“if”语句(并且找到了 Dir),该函数仍然继续递归不会在返回时退出 并打印“找不到相关目录!”
最佳答案
不是返回默认值,如果找到,您可以在递归调用期间返回。
private static Directory getParentDirectory(String parentDirName, Directory currentDirectory, int level) {
if (currentDirectory.getName().equals(parentDirName)) {
return currentDirectory;
} else {
// Recursively search for the parent Directory
for (Entity item : currentDirectory.contents) {
if (item instanceof Directory) {
Directotry result = getParentDirectory(parentDirName, (Directory) item, level + 1);
if (result != null) {
return result;
}
}
}
}
return null;
}
关于java - 嵌套 ArrayList 递归,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49573229/