Pour la même raison, le sac à provisions dans lequel je mets tous mes sacs de rechange n'est pas un sac à provisions multidimensionnel.
Si je mets une noix dans un sac puis que je mets ce sac dans un autre sac, je dois effectuer deux opérations pour obtenir la noix.
Si, au contraire, je place l'écrou dans un plateau de composants à deux dimensions, je peux effectuer une seule opération pour y accéder en utilisant deux indices :
source
De même, il existe une différence fondamentale entre une liste de listes (ou un tableau de tableaux) et un véritable tableau à deux dimensions : une seule opération prenant deux indices est utilisée pour accéder aux éléments d'un tableau à deux dimensions, tandis que deux opérations prenant chacune un indice sont utilisées pour accéder aux éléments d'une liste de listes.
Un ArrayList a un seul index, son rang est donc de 1. Un tableau à deux dimensions a deux index, son rang est de 2.
Remarque : par "tableau à deux dimensions", je ne fais pas référence à un tableau Java de (références à) tableaux, mais à un tableau à deux dimensions tel qu'on le trouve dans d'autres langages comme le FORTRAN. Java ne dispose pas de tableaux multidimensionnels. Si votre interlocuteur se référait spécifiquement aux "tableaux de tableaux" de Java, je ne serais pas d'accord avec lui, car les tableaux de Java ne sont pas multidimensionnels. int[][]
définit un tableau de références à des tableaux d'entiers, et qui nécessite deux opérations de déréférencement pour accéder aux éléments. Un tableau de tableaux en C, par exemple, permet l'accès par une seule opération de déréférencement et est donc plus proche du cas multidimensionnel.
1 votes
Toutes les listes ne doivent pas nécessairement avoir la même taille. En fait, certaines entrées de la liste extérieure peuvent être nulles.
12 votes
@MichaelMarkidis Les tableaux ne doivent pas tous avoir la même taille non plus.
7 votes
En fait, java n'a pas vrai Les tableaux 2D, ils sont implémentés comme des tableaux de tableaux, mais je peux comprendre quand les gens disent que c'est 2D...
0 votes
Je pense que c'est une question piège. Un
ArrayList
est soutenu par un tableau, je ne vois pas pourquoi il ne serait pas multidimensionnel.0 votes
@JacobG. C'est vrai, il y a pas de Les ArrayList à deux dimensions sont en fait citées par Cay S. Horstmann.
4 votes
@Aominè qu'entendez-vous par "vrai tableau 2D" ?
2 votes
@Lokesh Je ne sais pas si vous avez utilisé C# avant mais C# a vrai Tableaux 2D, à lire ici
0 votes
@Aominè Je ne sais pas si je le considérerais comme un
true 2D array
mais plutôt une matrice carrée.1 votes
@JacobG. Il y a une énorme différence entre les tableaux en dents de scie de JAVA et un tableau 2D.
2 votes
C'est une sacrée zone grise - je pourrais argumenter dans les deux sens. Il ne fait aucun doute que l'examinateur essayait juste de voir si vous compreniez bien ce genre de choses. Le nom qu'on lui donne est un peu moins utile dans le monde réel.
0 votes
@DawoodibnKareem yea, et il a juste gardé les choses autour pendant environ une demi-heure.
9 votes
" A bidimensionnel
ArrayList
" implique qu'il y a unArrayList
. Le même argument s'applique aux tableaux... mais comme Java a une syntaxe spéciale pour eux, les gens pensent souvent que les tableaux multidimensionnels sont des objets uniques (ce qu'ils ne sont pas vraiment).24 votes
À mon avis, c'est une question d'entretien vraiment stupide. A toutes fins utiles
List<List<Integer>>
est un tableau 2D : vous pouvez le visualiser comme existant en deux dimensions. Si vous vouliez être explicite quant à l'absence d'irrégularités, le mot "matrice" serait bien plus parlant. Ceci a été intentionnellement conçu pour vous déconcerter.0 votes
Si l'interviewer veut simplement que vous compariez et opposiez les structures de données, c'est une excellente question. Si l'interviewer pense que la question est un test de connaissance de Java alors voyez le commentaire de @Michael ci-dessus.
0 votes
Pour mémoire, veuillez envisager d'accepter la réponse la plus utile à un moment donné ...