如何正确创建一组多维数组

时间:2012-02-18 00:36:13

标签: java arrays list multidimensional-array

我一直在查看“接口”教程中的Java Tutorials,特别是CollectionsSetListQueue等)和我我发现Set不能在其元素中包含重复项。

我的问题是我不完全了解如何创建一组未知大小的多维数组。

为了填充多维数组,我将在数组中放置1和0,以便每个数组看起来如下所示:(如果它符合我要查找的标准)

[ 0  1  1  0
  0  1  1  0
  0  1  0  0
  0  1  0  0
  0  0  0  0 ]

或者那种性质的东西。我想这可以通过声明一个多维数组来完成:

int[][] array = new int[5][];

然而,我无法理解填充多个数组元素或如何使用集合完成此操作会如何。

如果不够清楚,请告诉我。

1 个答案:

答案 0 :(得分:3)

列表可以包含重复项,但不能包含。您可以通过多种方式声明(动态)多维结构,其中包括:

List<List<Integer>> multiDimensional = new ArrayList<List<Integer>>();
List<Integer> row = Arrays.asList({0, 1, 1, 0});
multiDimensional.add(row);

依此类推。要访问列表的元素,请使用get方法,其方式与对数组的方式类似:

Integer someVal = multiDimensional.get(0).get(3);

话虽如此,如果你的多维结构需要100%动态,你只需要使用这个嵌套的List设置,也就是说你需要能够在整个逻辑执行期间不断增长行和列。实际上,您可以将普通数组用于多维结构,假设可以提前确定行数,并且在初始化该行之后每行的长度不会更改。一个很好的例子:

int[][] multiDimensional = null;

int rows = ... ;// Determine number of rows
multiDimensional = new int[rows][];

for(final int[] row: multiDimensional) {
    final int cols = ...; // Determine number of cols for this row
    row = new int[cols];
}

您可以使用通常的数组语义(multiDimensional[0][3])来访问元素。