我想做一些简单的事情,就是创建自己的基于java.util.linkedlist的列表类,但是我想限制可以做的事情。可以说,目前,我要使用的唯一方法是addFirst方法。我正在创建一个单链列表。我遇到的问题是addFirst似乎无法识别,而且我不确定是否在自己的构造函数中正确创建了列表。这是我到目前为止的代码。

import java.util.LinkedList;


public class singleList {

singleList() {
     new LinkedList();
 }

//  void add(name addName) {
//      addFirst(addName);
//  }


public static void main(String[] args) {

singleList nameList = new singleList();

 name name1 = new name("John", "Smith");
 nameList.add(name1);


System.out.println("LinkedList contains : " + nameList);

 }
}


因此,您可以看到我想做的就是创建一个名为nameList的列表,此时,它唯一可以做的就是使用add方法,该方法应该调用LinkedList的addFirst方法,该方法将元素添加到列表中的第一个位置清单。这有意义吗?

我得到的第一个错误是它无法从我的add方法中找到符号“ addFirst”,而且我也不确定我的singleList构造函数是否正确。

如果有人想知道,这是为学校布置的作业。

这是修改后的代码,我从这里的第一个答案中采纳了一些建议,该答案看起来与另一个类似。

public class SingleList {

private LinkedList internalList;

SingleList() {
     internalList = new LinkedList();
 }

void add(name addName) {
    internalList.addFirst(addName);
}

String get(int index) {

    return internalList.get(index).toString();

}


public static void main(String[] args) {

    SingleList nameList = new SingleList();

    name name1 = new name("John", "Smith");
    nameList.add(name1);

    String getter = nameList.get(0);
    System.out.println("LinkedList contains : " + nameList.get(0));

}
}

最佳答案

您发布的代码的问题在于您没有将LinkedList分配给任何东西,然后编写addFirst()方法,就像它是singleList类的静态方法一样,该方法不存在。我相信您正在尝试做的是:

import java.util.LinkedList;

public class SingleList<T>
{
    private LinkedList<T> internal;

    SingleList()
    {
        this.internal = new LinkedList<>();
    }

    public void add(T addName)
    {
        this.internal.addFirst(addName);
    }

    @Override
    public String toString()
    {
        if(!this.internal.isEmpty())
        {
            return this.internal.get(0).toString();
        }
        else
        {
            return this.internal.toString();
        }
    }

    public static void main(String[] args)
    {
        SingleList<name> nameList = new SingleList<>();
        name name1 = new name("John", "Smith");
        nameList.add(name1);
        System.out.println("LinkedList contains : " + nameList);
    }
}


这也具有泛型的好处,这意味着它可以使用LinkedList可以使用的任何类型。另外,我可以自由更改类名的大小写,因为Java标准是对类名使用适当的大小写,对变量使用小写。

09-30 14:59