我有一个Integer(la)的ArrayList和一个整数的Arraylist的Arraylist(L) 我需要从la中的矩阵中取数字然后加入L. 如果我从la中删除所有元素,则L为[[],[],[]]
L必须是[[1,2,3],[4,5,6],[7,8,9]]
public static void main(String args[]) {
int [][]A = {{1,2,3},{4,5,6},{7,8,9}};
ArrayList<Integer> la = new ArrayList<Integer>();
ArrayList<ArrayList<Integer>> L = new ArrayList< ArrayList<Integer>>();
for(int i = 0; i < 3; i++) {
for(int j = 0; j < 3; j++) {
la.add(A[i][j]);
}
L.add(la);
la.clear();
}
System.out.println(L);
}
答案 0 :(得分:0)
您正在重复使用la
并清除它。由于此引用因其范围而共享,因此最终会得到ArrayList
(L
)空ArrayLists
。你需要在内循环中声明它。
int [][]A = {{1,2,3},{4,5,6},{7,8,9}};
ArrayList< ArrayList<Integer> > L = new ArrayList< ArrayList<Integer> >();
for(int i=0; i<3; i++ )
{
ArrayList< Integer > la = new ArrayList< Integer >();
for(int j=0; j<3; j++)
{
la.add(A[i][j]);
}
L.add(la);
}
注意:我还没有测试过,但它应该让你更接近。
答案 1 :(得分:-1)
我不确定我是否完全了解你,但我认为你需要复制一个ArrayList。
ArrayList a;
ArrayList b = new ArrayList(a);
这样你就不会在多个地方引用相同的ArrayLists。