web-dev-qa-db-fra.com

Qui vient en premier dans un tableau 2D, des lignes ou des colonnes?

Lors de la création d'un tableau 2D, comment savoir si les lignes ou les colonnes sont spécifiées en premier?

67
Matt B

Java est considéré comme "ligne majeure", ce qui signifie qu'il commence par les lignes. En effet, 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]

Cela peut aussi être visualisé plus comme ça:

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 de ceux-ci est un tableau contenant quatre éléments, {[0][1][2][3]}.

TL; résumé de DR:

Array[number of arrays][how many elements in each of those arrays]

Pour plus d'explications, voir aussi Tableaux - 2 dimensions.

76
MrHappyAsthma

Bien que Matt B puisse être vrai dans un sens, il peut être utile de penser à un tableau multidimensionnel Java sans penser aux matrices géométriques. Java) sont simplement des tableaux de tableaux, et chaque élément de la première "dimension" peut être de taille différente de celle des autres éléments, ou peut en fait stocker un tableau "sub" nul. Voir les commentaires sous cette question

20
Kevin Welker

Instinctivement, on pense géométriquement: axe horizontal (X) puis axe vertical (Y). Ce n'est cependant pas le cas avec un tableau 2D: les lignes viennent en premier, puis les colonnes.

Considérons l'analogie suivante: en géométrie, on se dirige vers l'échelle (axe des X) et l'ascension (axe des Y). Inversement, dans Java), on descend l’échelle (rangées) et on s’éloigne (colonnes).

11
Matt B

Tout dépend de votre visualisation du tableau. Les lignes et les colonnes sont des propriétés de visualisation (probablement dans votre imagination) du tableau, pas du tableau lui-même.

C'est exactement la même chose que de demander si le nombre "5" est rouge ou vert?

Je pourrais dessiner en rouge, je pourrais dessiner en cupidité, 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 sous forme de grille de lignes et de colonnes n'est pas nécessaire à l'existence de ce tableau.

Tableau 2D a juste première dimension et deuxième dimension , tout ce qui concerne la visualisation de ceux-ci est purement à votre goût.

Quand j'ai char array char[80][25], J’aimerais peut-être l’imprimer sur une console pivotée de manière à disposer de 25 rangées de 80 caractères qui correspondent à l’écran sans défilement.

Je vais essayer de fournir viable par exemple, lorsque représenter un tableau 2D sous forme de lignes et de colonnes n'a aucun sens: Disons qu'il me faut 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 aurez probablement une exception OutOfMemory. C'est à cause de la fragmentation de la mémoire - il n'y a pas de bloc de mémoire consécutif de cette taille. Au lieu de cela, vous pouvez créer un tableau 2D 10 000 x 100 000 avec vos valeurs. Logiquement, il s'agit d'un tableau 1D, vous souhaitez donc le dessiner et l'imaginer comme une séquence unique de valeurs, mais en raison de la mise en œuvre technique, il est en 2D.

4
Sasha

En Java, il n’existe pas de tableaux multidimensionnels. Il y a des tableaux de tableaux. Alors:

int[][] array = new int[2][3];

En fait, il se compose de deux tableaux, chacun ayant trois éléments.

2
Eng.Fouad

Dans Java, les lignes sont effectuées en premier, car un tableau à 2 dimensions est considéré comme deux tableaux distincts. Commence par le premier tableau de dimensions à la ligne 1.

0
Nour Lababidi