[JAVA] Jusqu'à ce que vous compreniez que l'instruction for étendue et l'instruction for utilisant la longueur sont le même processus (gérer un tableau multidimensionnel)

introduction

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.

Écrire avec une instruction étendue pour

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.

Écrire avec la déclaration traditionnelle pour

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.

À propos de l'écriture en utilisant la longueur, écrivez dans une forme proche de l'instruction for étendue


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.

Résumé

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

Jusqu'à ce que vous compreniez que l'instruction for étendue et l'instruction for utilisant la longueur sont le même processus (gérer un tableau multidimensionnel)
Comparez la vitesse de l'instruction for et de l'instruction for étendue.
Remarque: attribution et affichage de valeurs à des tableaux multidimensionnels et mise en pratique étendue des instructions