Vous pouvez écrire une boucle qui récupère les éléments d'un tableau un par un en utilisant la longueur comme condition de répétition dans l'instruction for.
De plus, bien que l'instruction for étendue puisse écrire le même processus plus simplement, je ne pouvais pas tout à fait comprendre "pourquoi les deux processus sont identiques".
Donc, cette fois, je voudrais présenter dans cet article pourquoi les deux processus sont les mêmes en utilisant un tableau multidimensionnel et comment je l'ai compris.
Cette fois, en utilisant le tableau tridimensionnel suivant comme exemple, chaque élément est généré par la méthode plintln.
int[][][] array = { { { 1, 2 }, { 3, 4 }, { 5, 6 } }, { { 7, 8 }, { 9, 10 }, { 11, 12 } } };
Commençons par écrire avec l'instruction for étendue.
for (int[][] tmp1 : array) {
for (int[] tmp2 : tmp1) {
for (int tmp3 : tmp2) {
System.out.println(tmp3);
}
}
}
Un entier compris entre 1 et 12 est émis vers la console.
Ensuite, comment écrire en utilisant la longueur comme condition de répétition.
Quand j'écris en utilisant la longueur, j'écrivais comme suit.
for (int i = 0; i < array.length; i++) {
for (int j = 0; j < array[i].length; j++) {
for (int k = 0; k < array[i][j].length; k++) {
System.out.println(array[i][j][k]);
}
}
}
Si vous regardez ʻarray [i] [j] [k] `, vous pouvez voir que nous extrayons les éléments du tableau un par un.
Cependant, lorsque j'ai comparé cela à la déclaration étendue pour ci-dessus, je ne pouvais pas comprendre immédiatement que cela faisait la même chose. Voici la partie que j'ai ressentie "je ne comprends pas".
Par conséquent, j'ai réécrit la méthode d'écriture en utilisant la longueur comme suit.
for (int i = 0; i < array.length; i++) {
int[][] tmp1 = array[i];
for (int j = 0; j < tmp1.length; j++) {
int[] tmp2 = tmp1[j];
for (int k = 0; k < tmp2.length; k++) {
int tmp3 = tmp2[k];
System.out.println(tmp3);
}
}
}
En écrivant ʻint [] [] tmp1 = array [i]; `sans l'omettre, nous avons pu le rendre presque identique à l'instruction for étendue.
Si vous regardez uniquement la méthode d'écriture utilisant length, il est plus facile de comprendre ce que fait la méthode d'écriture utilisant ʻarray [i] [j] [k] , mais c'est la même chose que l'instruction for étendue. Je pense qu'il serait plus facile de comprendre si ce serait un processus si vous l'écriviez sans omettre ʻint [] [] tmp1 = array [i];
.
Si, comme moi, vous ne comprenez pas bien "pourquoi les deux processus sont identiques", j'espère que cet article vous aidera à comprendre.
Recommended Posts