java - 用java写一个递归方法

标签 java recursion

我正在尝试编写一个递归方法来搜索 IData 对象列表并返回一个特定的实现。该列表包含实现接口(interface) IData 的对象。

这个接口(interface)有两种实现方式:

1) 数据实现

2) 数据容器实现

DataContainerImpl 有一个:

 List<IData> children;

因此它可以包含嵌套的 DataContainerImpl 元素或只是普通的 DataImpl。这是我所做的:

  public static DataContainerImpl findDataContainerWithName(Collection<IData> elements, String name) {
    for (IData  element : elements) {
      if (element instanceof DataContainerImpl) {
        DataContainerImpl container = (DataContainerImpl) element;
        if (container.getName().equals(name)) {
          return container ;
        }

       container = findDataContainerWithName(container.getChildren(), name);
       if (container != null) {
         return container ;
       }
      }
    }
    return null;
  }

最佳答案

不确定您在这里做什么,但是递归调用“findContainerByName()”而前面没有“return”对您没有任何好处。

递归调用将返回 ,但随后调用将降到底部并返回 null。

例如,如果您的列表仅包含 1 个 DataContainerImpl,其名称与您调用方法所用的名称不匹配,但它内部包含一个列表,同样只有 1 个 DataImpl,您仍然会返回 null。这是你想要的吗?

关于java - 用java写一个递归方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5930505/

相关文章:

java - number 不能包裹在 flyingsaucer 和 itext 中

java - 具体类实现一个接口(interface),该接口(interface)知道实现它的具体类

java - 根据 DateTime 行对 HashBasedTable 条目进行分组

javascript - 使用 Promise 调用分页 API

java - 是否有 Java LinkedList 方法可用作环表?

java - 将字体应用于 JTextArea 会导致 gui 崩溃吗?

java - 为什么 isBinarySearchTree() 函数不正确

c++ - 递归矩阵乘法算法计算失败

algorithm - 演示良好使用相互递归的示例

Java 平方函数