Lors de la création d'un tableau 2D, comment se rappeler si les lignes ou les colonnes sont spécifiées en premier ?
Réponses
Trop de publicités?Java spécifie des tableaux similaires à ceux d'une configuration "row major", ce qui signifie qu'il indexe les rangées en premier. Cela s'explique par le fait qu'un tableau 2D est un "tableau de tableaux".
Par exemple :
int[ ][ ] a = new int[2][4]; // Two rows and four columns.
a[0][0] a[0][1] a[0][2] a[0][3]
a[1][0] a[1][1] a[1][2] a[1][3]
On peut aussi le visualiser de la façon suivante :
a[0] -> [0] [1] [2] [3]
a[1] -> [0] [1] [2] [3]
La deuxième illustration montre l'aspect "tableau de tableaux". Le premier tableau contient {a[0] and a[1]}
et chacun d'entre eux est un tableau contenant quatre éléments, {[0][1][2][3]}
.
Le résumé TL;DR :
Array[number of arrays][how many elements in each of those arrays]
Pour plus d'explications, voir également Tableaux - 2-dimensionnels .
Instinctivement, on pense de manière géométrique : axe horizontal (X) puis axe vertical (Y). Ce n'est cependant pas le cas avec un tableau 2D, les lignes viennent en premier et ensuite les colonnes.
Considérons l'analogie suivante : en géométrie, on se dirige vers l'échelle (axe X) et on la gravit (axe Y). À l'inverse, en Java, on descend l'échelle (lignes) et on s'en éloigne (colonnes).
Bien que Matt B soit vrai dans un sens, il peut être utile de penser aux tableaux multidimensionnels de Java sans penser du tout aux matrices géométriques. Les tableaux multidimensionnels Java sont simplement des tableaux de tableaux, et chaque élément de la première "dimension" peut être de taille différente des autres éléments, ou en fait peut stocker un "sous"-tableau nul. Voir les commentaires sous cette question
Tout dépend de la façon dont vous visualisez le tableau. Les rangées et les colonnes sont des propriétés de visualisation (probablement dans votre imagination) du tableau, et non le tableau lui-même.
C'est exactement la même chose que de demander si le numéro "5" est rouge ou vert ?
Je pourrais le dessiner en rouge, je pourrais le dessiner en vert, non ? La couleur n'est pas une propriété intégrale d'un nombre. De la même manière, représenter un tableau 2D comme une grille de lignes et de colonnes n'est pas nécessaire à l'existence de ce tableau.
Le tableau 2D vient de première dimension y deuxième dimension tout ce qui est lié à la visualisation de ces derniers est purement de votre ressort.
Lorsque j'ai un tableau de chars char[80][25]
J'aimerais peut-être l'imprimer sur la console en la faisant pivoter de manière à obtenir 25 lignes de 80 caractères qui tiennent sur l'écran sans défilement.
Je vais essayer de fournir des exemple où la représentation d'un tableau 2D en lignes et colonnes n'a aucun sens : Disons que j'ai besoin d'un tableau de 1 000 000 000 d'entiers. Ma machine a 8 Go de RAM, donc j'ai assez de mémoire pour cela, mais si vous essayez d'exécuter var a = new int[1000000000]
vous obtiendrez très probablement l'exception OutOfMemory. Cela est dû à la fragmentation de la mémoire - il n'y a pas de bloc de mémoire consécutif de cette taille. À la place, vous pouvez créer un tableau 2D 10 000 x 100 000 avec vos valeurs. Logiquement, il s'agit d'un tableau 1D, que vous aimeriez dessiner et imaginer comme une seule séquence de valeurs, mais en raison de la mise en œuvre technique, il est en 2D.
- Réponses précédentes
- Plus de réponses