在Java中创建集合的数组(?)

时间:2011-02-01 23:46:21

标签: java declaration

我正在尝试编写一个算法,该算法可以找到Sudoku板中给定部分填充的解决方案的数量。即给予

"1 6 4 0 0 0 0 0 2",
"2 0 0 4 0 3 9 1 0",
"0 0 5 0 8 0 4 0 7",
"0 9 0 0 0 6 5 0 0",
"5 0 0 1 0 2 0 0 8",
"0 0 8 9 0 0 0 3 0",
"8 0 9 0 4 0 2 0 0",
"0 7 3 5 0 9 0 0 1",
"4 0 0 0 0 0 6 7 9"

其中0表示空白点。我想创建3个单独的集合数组,每个数组在每列,行和3x3平方中。我正在尝试宣言:

horizontal = new HashSet<Integer>[9];

前面声明了私有HashSet [] horizo​​ntal,但这不起作用。什么是正确的声明或者我不能声明一个集合数组?

3 个答案:

答案 0 :(得分:1)

问题是类型参数。您无法在Java中创建通用数组。您可以删除类型参数,它将起作用,但您应该收到有关未选中操作的警告。

答案 1 :(得分:1)

你可以试试这个:

horizontal = new ArrayList<HashMap<Integer>>();

使用horizontal.get(1);访问它,您可以像处理普通数组一样对待它。正如@ user599152所说,你无法创建通用数组。所以你需要弄清楚另一种方式。列表可能是你最好的选择。

答案 2 :(得分:0)

数组是一种存储数据的奇怪方法。 2d阵列或2d阵列的2d阵列可能是更直观的建模方式。可能一些自定义类(“SudokuCube”)的二维数组也可能比一组数组更好。