我一直在查看“接口”教程中的Java Tutorials,特别是Collections
(Set
,List
,Queue
等)和我我发现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][];
然而,我无法理解填充多个数组元素或如何使用集合完成此操作会如何。
如果不够清楚,请告诉我。
答案 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]
)来访问元素。