java - 来自泛型元素数组的递归构造函数

标签 java recursion constructor

我有这个任务,我必须在 java 中实现一个链表类,但是,它需要完全用递归函数实现,甚至是构造函数。

老师提供的项目中给出的构造函数接收到一个n个通用元素的数组,带有3点符号(T ...元素)并且在我有点摸不着头脑之后(我从来没有做过递归构造函数) 我想出了一些显然行不通的东西:

public SingleLinkedListImpl(T ... elements) {
    if(elements.length<=1){
        header = new Node<T>(elements[0]);
    } else {
        addLast(elements[0]);
        elements=Arrays.copyOfRange(elements, 1, elements.length-1);
        this(elements);
    }
}

我目前使用的 IDE 说这不能完成,因为如果我用 this 引用构造函数,在构造函数本身内部它必须是函数中的第一条语句。

我该如何处理这个问题?

顺便说一句:我不能使用 Collections API 中的任何东西

最佳答案

“递归构造函数”不等同于调用 this() ,而是调用 new SingleLinkedListImpl() .

此外,this 头,而不是头。

假设您的类(class)有 nextvalue字段,伪代码:

  • 如果数组为空,抛出IllegalArgumentException
  • 设置value到数组的第一个元素
  • 如果数组中有超过1个元素,设置next的值至 new SingleLinkedListImpl(<elements 1 to n>)

调用它:

SingleLinkedListImpl<Integer> head = new SingleLinkedListImpl<>(3, 1, 4, 1, 5); // for example

关于java - 来自泛型元素数组的递归构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55786655/

相关文章:

python - 如何获得产品价格的所有可能组合列表以达到目标成本?

Javascript无限类别深度树

c++ - (SFML)按下键时播放器构造函数未更新为正确的动画

java - 使用 BigInteger 类的负指数

java - 从 JSpinner 获取数据并将其存储到数组中

java - 如何将其变成帕斯卡三角形而不是直角三角形?

c++ - 在 C++ 构造函数中有一个循环是个好主意吗?

java - 以下类无法实例化 : - android. support.v7.widget.Toolbar

javascript - 使用迭代样式在 JavaScript 中克隆对象

Javascript继承类构造函数问题