我试图将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被清除之前
[[]]作为主列表
答案 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);