java - 嵌套 ArrayList 递归

标签 java recursion arraylist

我试图找到只给出其名称的父目录, 即我有一个目录名称,我需要找到它并返回它。
我用 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/

相关文章:

java - JNI、垃圾收集和指针——Java/C++ 谁应该做什么?

java - 递归回文一遍又一遍地返回语句

Java 递归泛型和通配符

c++ - ifstream 无法在递归调用中打开

java - ArrayList最后为null

java - 使用 bean 在 Java Spring 中进行集合合并

java - 将 @OneToMany 实体与子实体一起保存(带有复合外键的 @EmbeddedId)

java - ArrayList for 循环仅适用于第一个元素

java - android中保存对象数组列表的方法

java - 为什么这个 java 代码没有得到最后更新的 ID?