更改添加的数组会更改我添加它的arraylist

时间:2016-07-24 17:34:07

标签: java arraylist

我试图将arraylists添加到我认为的arraylists的arraylist(抱歉,我是初学者),但每当我取消临时性,以便我可以获取要添加的下一行数据时,它会将主要的arraylist更改为好。有没有办法只复制值而不指向相同的引用?

for (int n=0; n!=cellCount+1; n++)
        {
            temp.add(inputFile.nextDouble());
            System.out.println(temp);
        }

        mainList.add(temp);


    //}
temp.clear();
System.out.println(mainList);

打印: [0.0,4.0,6.0,9.0,15.0,15.0,15.0,15.0,15.0,15.0,15.0,15.0,15.0,15.0,15.0,15.0,15.0,15.0]作为最终临时arraylist被清除之前

[[]]作为主列表

1 个答案:

答案 0 :(得分:1)

我假设temp是您的ArrayList

执行此操作时:

mainList.add(temp);

您将该数组列表的引用放入mainList。它是的副本,它是对它的引用。您每次都只是重复使用相同的ArrayList

相反,在每个循环中创建 new ArrayList(然后您不需要clear),例如:

while (/*...whatever, there's clearly some loop here..*/) {
    temp = new ArrayList();
    for (int n=0; n!=cellCount+1; n++)
    {
        temp.add(inputFile.nextDouble());
        System.out.println(temp);
    }

    mainList.add(temp);
}
System.out.println(mainList);