我尝试创建一个程序,其中包含两个列表:list1 (List<Integer>
),它会不断添加新值;list2 (List<List<Integer>>
),它会存储list1的值。我从以下代码开始:
int x=1;
while(x<=10)
{
list1.add(x);
System.out.println(list1);
x++;
}
输出结果就像我想的那样;
[1]
[1, 2]
[1, 2, 3]
[1, 2, 3, 4]
[1, 2, 3, 4, 5]
[1, 2, 3, 4, 5, 6]
[1, 2, 3, 4, 5, 6, 7]
[1, 2, 3, 4, 5, 6, 7, 8]
[1, 2, 3, 4, 5, 6, 7, 8, 9]
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
然后我将System.out.println(list1);
改为list2.add(list1);
,并加入了一个增强for循环;
for(List<Integer> y:list2)
{
System.out.println(y);
}
但是与之前输出不同,它显示为:
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
就好像它只是重复了list1的最后一个状态10次!你知道原因吗?