【发布时间】:2013-08-27 03:20:20
【问题描述】:
我正在开发一个数独求解程序,我需要一个数组列表来保存 9x9 板上每个方块的数字 1 到 9。这些数组列表中的每一个都对应于可以进入该方格的可能数字,如果一个数字不能进入该方格,则将其从列表中删除。
我希望能够拉出它正在处理的当前方格的数组列表,例如,如果我想从对应于方格 (3,5) 的数组列表中删除数字 7
arrayOfLists[3][5].remove(Integer.valueOf(7));
但是我不知道该怎么做。当我尝试创建数组时,我在声明我的数组列表的行中收到此错误
无法创建 ArrayList 的泛型数组
这是我的代码:
//create arraylist
ArrayList<Integer> nums = new ArrayList<Integer>();
//fill arraylist with numbers 1-9
for (int i = 1; i < 10; i++) {
nums.add(i);
}
//create 9x9 array of arraylists
ArrayList<Integer>[][] array = new ArrayList<Integer>[9][9];
//fill each element of array with arraylist of numbers 1-9
for(int i = 0; i<9; i++){
for(int j = 0; j<9; j++){
array[i][j] = nums;
}
}
}
是我做错了还是无法创建数组列表?如果不可能,那我该怎么做呢?
【问题讨论】:
-
将第 10 个元素
ArrayList<Integer>替换为boolean[9]并将那些被移除的元素设置为false -
我在这些链接的任何答案中都没有看到这一点,但我只是尝试了
private class IntegerArrayList extends ArrayList<Integer> { ... }并声明了刚刚使用super(...)的ArrayList 之类的构造函数;然后我能够使用new IntegerArrayList[9][9]和ArrayList方法在数组组件上运行良好,例如a[i][j].add(n)。这种方法行不通有什么原因吗? -
我会使用数组,而不是 ArrayList。