import java.util.ArrayList;
public class bugs
{
public ArrayList<Integer> elements1;
public ArrayList<Integer> elements2;
public bugs(ArrayList<Integer> args)
{
elements1 = args;
elements2 = args;
}
public void change(int index, int value)
{
elements1.set(index, value);
}
public void reset()
{
elements1 = elements2;
}
public static void main(String[] a)
{
ArrayList<Integer> stuff = new ArrayList<Integer>();
stuff.add(1);
stuff.add(1);
stuff.add(1);
stuff.add(1);
bugs b = new bugs(stuff);
b.change(2, 999);
b.reset();
System.out.println(b.elements2);
}
}
此输出工作:的ArrayLists未如预期
[1,1,999,1]
第二数组列表elements2
有到ArrayList elements1
复位到其初始位置。然而,由于某种原因,elements1
正在被拷贝到elements2
,打印
[1,1,999,1]
和不
[1,1,1,1 ]
为什么你认为它应该打印'[1,1,1,1]'?需要注意的是'elements2','elements1'和'stuff'是整个程序的整个运行时间的***同***对象。改变一个的内容也会改变另外两个的内容。 – luk2302
阅读本U移动之前http://docs.oracle.com/javase/tutorial/collections/interfaces/list.html – emotionlessbananas
和[1,1,1,1]你需要你将它添加999之前(重置复印一份) – emotionlessbananas