这是我的代码。 在我的情况下,名单越来越多。 输出应为[[1] [1,1] [1,2,1] [1,3,3,1] [1,4,6,4,1] 我变得像 - [[1,4,6,4,1],[1,4,6,4,1],[1,4,6,4,1],[1,4,6,4] ,1],[1,4,6,4,1]]。这是循环重复的最新值。可能是什么问题
int i,j;
i=0;
j=0;
int a;
Integer temp;
a = 5;
ArrayList<ArrayList<Integer>> list = new ArrayList<ArrayList<Integer>>();
ArrayList<Integer> list1 = new ArrayList<Integer>();
for ( i =0 ;i<a ;i++)
{
list1.clear();
Integer number;
number = (int) Math.pow(11, i);
LinkedList<Integer> stack = new LinkedList<Integer>();
while (number > 0) {
stack.push( number % 10 );
number = number / 10;
}
while (!stack.isEmpty()) {
temp = (stack.pop());
list1.add(temp);
}
list.add(list1);
}
System.out.println("The arraylist contains the following elements: "+ list);
答案 0 :(得分:0)
您似乎每次都在清理List1数组。并且在大型数组列表中只有一个数组列表。所以你最终得到了你在内部arraylist上的最后结果。为了获得预期的结果,你应该在for循环中创建几个arraylists。
答案 1 :(得分:0)
将list1.clear()
替换为list1 = new ArrayList<Integer>();
在Java中,它是按值调用的。但是当说list1
时,您只有参考到list1
。
所以当你在迭代时,你正在做list1.clear
。它的作用是清除引用列表1 列表指向。这将清除您添加到list
中的列表。所以最后得到的是list1
的最新内容。
有关详细说明,请参阅this