【问题标题】:Java: ArrayList^2 to int[][]Java:ArrayList^2 到 int[][]
【发布时间】:2012-05-25 15:31:41
【问题描述】:

我有这个数组列表:

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

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

我有某种循环对吗?

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

                }

干杯!

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

【问题讨论】:

  • 不错!没想到!所以现在我有每个整数......但是数组不是动态的,没有 array.add 方法:(
  • @AndroidXTr3meN 你对数组的看法是对的,但你可以很容易地添加到 ArrayList 或其他 List 类型。

标签: java arrays multidimensional-array for-loop


【解决方案1】:

这应该可行:

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!
    }
}

【讨论】:

  • 只是作为一个建议(和一种间接的问题),你不能做 item.toArray() 并传递一个整数数组作为参数而不是嵌套的吗?
  • @Gamb - 可以,但是你会有一个Integer 数组,而不是像OP 想要的int 数组。不幸的是,Java 没有对盒装原语数组进行方便的拆箱转换。你仍然会被困在迭代 Integer[] 结果。
【解决方案2】:

如果您能够使用 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()]);           
    }

【讨论】:

  • OP 询问如何生成int[][],而不是Integer[][]
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-01-31
  • 1970-01-01
  • 2018-04-30
  • 1970-01-01
  • 1970-01-01
  • 2011-12-16
  • 1970-01-01
相关资源
最近更新 更多