如何只通过一个2d数组的第一行迭代?



我有一个初学者的问题。

如何在Java中迭代二维数组的第一行?

例如,如果我有:

int[][] array = {{5, 22, 30, 40, 30}, {96, 20, 30, 25, 25}};

如何只遍历{5, 22, 30, 40, 30}{96, 20, 30, 25, 25}?

在JAVA 2D数组中表示1D array of 1D arrays;也就是说,每一行都是单独的1D数组(因此它们可以有不同的大小)。

int[][] arr = new int[2][3]意味着您已经创建了2D数组,每行有2行和3列。行和列为零索引,因此要访问第一行,您应该使用0index。

int[][] array = {{5, 22, 30, 40, 30}, {96, 20, 30, 25, 25}};
System.out.println(Arrays.toString(array[0]));    // {5, 22, 30, 40, 30}
System.out.println(Arrays.toString(array[1]));    // {96, 20, 30, 25, 25}

Simple:

第一个方括号表示你要查找哪个数组?{5, 22, 30, 40, 30}[0] or{96, 20, 30, 25, 25}[1] ?

然后,第二个方括号是:你在寻找数组中的哪个元素?要检索{5, 22, 30, 40, 30}的22,您应该使用[0][1],[表示第一个数组]和[表示数组的第二个元素]。

编辑

你需要2个for循环来迭代所有的元素:

for (int row = 0; row < array.length; row++) {    
for (int col = 0; col < array[row].length; col++) {
System.Out.Println(array[row][col]);
}
}

源这里

编辑# 2要只迭代第一个数组,请将第一个方括号改写为[0]:

for (int col = 0; col < array[0].length; col++) {
System.Out.Println(array[0][col]); // Iterating only the first array elements.
}

您可以使用Stream:

int[][] array = {{5, 22, 30, 40, 30}, {96, 20, 30, 25, 25}};
System.out.println(Arrays.stream(array[0])
.mapToObj(String::valueOf)
.collect(Collectors.joining(" "))); //5 22 30 40 30
System.out.println(Arrays.stream(array[1])
.mapToObj(String::valueOf)
.collect(Collectors.joining(" "))); //96 20 30 25 25

参见:在java 8中使用Streams代替for循环