【发布时间】:2013-11-30 12:42:43
【问题描述】:
我尝试创建一个包含 2 个列表的程序; 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次! 你知道是什么原因吗?
【问题讨论】: