En Java, un tableau multidimensionnel est-il stocké en ordre majeur ou en grand rang?
Java n’a pas de tableaux multidimensionnels. Il a des tableaux de tableaux. Donc, par exemple,
int[][]
… est un tableau de int[]
(et bien sûr, int[]
est un tableau de int
).
Par conséquent, Java n’est ni un ordre colonne-majeur ni un ordre ligne-majeur (mais voir la note ci-dessous sur la façon de lire a[2][3]
), car, bien que les entrées d’un tableau donné soient stockées dans un bloc de mémoire contigu, les tableaux subordonnés les entrées pointent vers sont des références d’objects à des blocs de mémoire totalement indépendants et indépendants. Cela signifie également que les tableaux de tableaux de Java sont insortingnsèquement irréguliers : l’entrée en [0]
peut faire référence à un tableau à 3 emplacements, celle en [1]
peut faire référence à un tableau à 4 emplacements, [2]
peut ne pas faire référence à un tableau. array (il pourrait avoir null
), et peut-être [3]
fait référence à un tableau à 6 emplacements.
Une image vaut 1k-24 mots et tout ça:
+ −−−−−−−− + + −−−−> | int [] | + −−−−−−−−−−−− + | + −−−−−−−− + | int [] [] | | | 0: int | + −−−−−−−−−−−− + | | 1: int | | 0: int [] | −−−−−− + | 2: int | | 1: int [] | −−−−−− + + −−−−−−− + + | 2: null | | | 3: int [] | −− + | + −−−−−−−− + + −−−−−−−−−−−− + | + −−−−> | int [] | | + −−−−−−−− + | | 0: int | | | 1: int | | | 2: int | | | 3: int | | + −−−−−−−− + | | + −−−−−−−− + + −−−−−−−−− | int [] | + −−−−−−−− + + | 0: int | | 1: int | | 2: int | | 3: int | | 4: int | | 5: int | + −−−−−−−− +
Une fois que vous savez cela, vous savez que (par exemple) a[2][3]
signifie “Obtenez le tableau référencé par l’entrée à l’index 2
d’ a
, puis obtenez l’entrée référencée par l’index 3
de ce tableau subordonné.” Je pense que c’est assez similaire à l’ordre des grandes lignes, mais ce n’est pas tout à fait la même chose.
En Java, vous n’avez que des tableaux à une dimension.
Les tableaux 2D ne sont en principe que des tableaux unidimensionnels.
int[ ][ ] table; table = new int[3][ ]; table[0] = new int[5]; table[1] = new int[5]; table[2] = new int[5];
Ni. Un tableau à deux dimensions en Java est un tableau de références aux tableaux. Il n’est pas stocké linéairement en mémoire.