0

我有这个数组列表:

 ArrayList<ArrayList<Integer>> temporary = new ArrayList<ArrayList<Integer>>();

我需要如何将其转换为 int[][]

我有某种循环对吗?

               for(ArrayList<Integer> item: temporary) {
                    //Here??

                }

干杯!

我被卡住了,因为数组不是动态的(或者你所说的)。

4

2 回答 2

5

这应该有效:

final int N = temporary.size();
int[][] a = new int[N][];
for (int i = 0; i < N; ++i) {
    final ArrayList<Integer> item = temporary.get(i);
    final int M = item.size();
    a[i] = new int[M];
    for (int j = 0; j < M; ++j) {
        a[i][j] = item.get(j); // assumes no null elements!
    }
}
于 2012-05-25T15:35:58.957 回答
1

如果您能够使用 Integer[][] (int 的对象包装器),您可以在单个循环中完成(有一个内部循环,但它对您隐藏)。

    ArrayList<ArrayList<Integer>> temporary = new ArrayList<ArrayList<Integer>>();              
    Integer[][] integers = new Integer[temporary.size()][];
    int i = 0;
    for(ArrayList<Integer> l : temporary)
    {
        integers[i++] = l.toArray(new Integer[l.size()]);           
    }
于 2012-05-25T15:51:09.763 回答