我需要使用引用变量吗? (链表)

时间:2013-10-27 16:52:52

标签: java

我遇到需要填充对象数组的情况。

这是我的代码:

final class ObjectClass
{
    List<ObjectClass> array;
    private int data;

    ObjectClass(int data)
    {
        this.data = data;
    }

    public void fillArray() {
        array = new LinkedList<>();
        for(int i = 0;i < array.size();i++)
        {
            data++;
            array.add(new ObjectClass(data));
        }

    }
}

我对此没有任何结果。这有什么问题? 这样添加是否有效:array.add(new ObjectClass(data))

在这种情况下,结果和逻辑毫无意义。我只是想让ObjectClass的数组具有不同的数据值。我看到,有人使用了一个引用变量并将其存储在一个数组中,但只有创建对象才有效吗?

添加打印方法:

    public void display() {
    for(ObjectClass e : array) {
        System.out.println(e);
    }
}

4 个答案:

答案 0 :(得分:4)

这里没有发生任何事情的原因是:

for(int i = 0;i < array.size();i++)

之前的行,你刚刚创建了array所以它仍然是空的 - 因此,循环的主体根本不会被执行。

答案 1 :(得分:1)

每当你打电话给fillArray时,你就是在数组中销毁数据(不过它已经在那里发现了):

array = new LinkedList<>();

首先,将字段更改为使用预先初始化,这样就不会在每次方法调用时覆盖字段。

List<ObjectClass> array = new LinkedList<>();

现在,为您的方法。您不进入循环,因为array始终为空。根据您要完成的任务,您应该通过该对象,或者创建 n 次的副本。

public void fillArray(int times) {

    for(int i = 0;i < times; i++) {
        data++;
        array.add(new ObjectClass(data));
    }

}

最后,请注意,如果循环 工作,dataarray.size()将是等效的(只要您没有删除任何内容)。我重新考虑该变量的目的/意图。

答案 2 :(得分:0)

List<ObjectClass> array 声明为static,它会通过创建Class variable而不是对象级别来实现您想要实现的目标

答案 3 :(得分:0)

问题是array(顺便说一下它实际上不是一个数组 - 它的名字错误)最初的大小为0,所以该方法什么都不做。

您忘记考虑要用“填充”数据结构的数字。