我读过Java:完整的参考(第9篇)。在字符5中:控制语句-遍历多维数组部分编写:
增强版的for也适用于多维数组。但是,请记住,在Java中,多维数组由数组组成。(例如,二维数组是由一维数组组成的数组。)在对多维数组进行迭代时,这一点很重要,因为每次迭代都获得下一个数组,而不是单个元素。此外,for循环中的迭代变量必须与所获得的数组类型兼容。例如,对于二维数组,迭代变量必须是对一维数组的引用。通常情况下,当使用for-each for在N维数组上迭代时,获得的对象将是N-1维数组。为了理解这一点的含义,请考虑以下程序。它使用嵌套的for循环来获得二维数组的元素,从一开始到最后,按行顺序排列。
我不明白为什么“在N维数组上迭代,得到的对象将是N-1维数组”。是真的吗?
发布于 2015-02-25 14:57:46
N维数组实际上是(N1)-dimensional数组的数组。因此,当我们在N维数组上迭代时,我们将遍历它的所有组成(N-1)-dimensional数组,如所示。
例如,考虑一个二维数组:
int[][] array = {{1,2,3}, {4,5,6}};这实际上是一个一维数组:{1,2,3}和{4,5,6}.
发布于 2015-02-25 15:04:48
考虑一个三维矩阵(数学上定义的)。
当你在行中迭代时,你得到的是二维矩阵,当你遍历每个二维矩阵时,你得到的是一维向量。
// Three dimensions
String[][][] stringArray = new String[3][3][3];
// Iterating over one dimension
// results in two dimensional array
for (String[][] strings : stringArray) {
// Iterating over one dimension
// results in one dimensional array
for (String[] strings2 : strings) {
// Iterating over one dimension
for (String string : strings2) {
}
}
}发布于 2015-02-25 14:58:42
假设您的多维数组为(x,y,z)。当你在第一个坐标上迭代时,你固定x (x = 1,2,…,n),得到(y,z) 2d-数组。
然后将y(y = 1,2,.,m)固定,得到(z)一维数组。
https://stackoverflow.com/questions/28722209
复制相似问题