Я попытался создать программу с 2 списками; list1 (List<Integer>
), который будет постоянно добавлять новые значения и list2 (List<List<Integer>>
), который сохранит значения list1. Я начал с этого:Java, использующий списки для хранения списков
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);
, а затем включал Enchanced цикл;
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 раз! Знаете ли вы, в чем причина?