Arraylist元素的ArrayList

时间:2015-01-11 15:46:15

标签: java arraylist

我有一个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);    
}

2 个答案:

答案 0 :(得分:0)

您正在重复使用la并清除它。由于此引用因其范围而共享,因此最终会得到ArrayListL)空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。