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));
}
}
我使用以下代码,但它给了我错误。请建议。
答案 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
}