我应该如何将列表转换为2-D int [] []数组?

时间:2017-11-15 22:48:46

标签: java arrays arraylist

private ArrayList<ArrayList<Integer>> list ;
 int size = list.size();

         int[][] iArray = new int[size][size];
for (int i=0; i<size; ++i){
             for (j = 0; j<size; ++j){
                 iArray[i][j] = list.get(j +( list.size() * i)); 
     }
}

我使用以下代码,但它给了我错误。请建议。

2 个答案:

答案 0 :(得分:0)

你得到什么错误? 问题可能是你的内部ArrayList比外部的更精确。 相反,它不会导致错误,但你的2D数组将是不完整的。 并且你在内部for循环中有一个语法错误你的j doenst有一个变量类型 你必须做这样的事情

    int iOuterSize = list.size();
    int iBiggestInnerSize = -1;
    for (ArrayList<Integer> arrayList : list) {
        int iCurInnerSize = arrayList.size();
        if (iCurInnerSize > iBiggestInnerSize) {
            iBiggestInnerSize = iCurInnerSize;
        }
    }
    int[][] iArray = new int[iOuterSize][iBiggestInnerSize];
    for (int i = 0; i < iOuterSize; i++) {
        for (int j = 0; j < list.get(i).size(); j++) {
            iArray[i][j] = list.get(i).get(j);
        }
    }

答案 1 :(得分:0)

由于你有一个2D列表,你只需要两个循环就可以将它转换为2D数组。

现在,由于Java实际上并不支持2D列表/数组,因此它们实际上是列表列表,要转换为数组数组,而子列表/数组并不一定都具有相同的大小。

因此,要支持jagged 2D list/array,请从相应的子列表中单独创建每个子数组,如下所示:

int[][] iArray = new int[list.size()][]; // create outer array
for (int i = 0; i < list.size(); i++) {
    ArrayList<Integer> subList = list.get(i);
    iArray[i] = new int[subList.size()]; // create sub-array
    for (int j = 0; j < subList.size(); j++)
        iArray[i][j] = subList.get(j);   // copy value
}