J'ai besoin d'obtenir la longueur d'un tableau 2D pour la ligne et la colonne. J'ai réussi cela, en utilisant le code suivant:
public class MyClass {
public static void main(String args[])
{
int[][] test;
test = new int[5][10];
int row = test.length;
int col = test[0].length;
System.out.println(row);
System.out.println(col);
}
}
Cela imprime 5, 10 comme prévu.
Jetez maintenant un œil à cette ligne:
int col = test[0].length;
Notez que je dois en fait référencer une ligne particulière, afin d'obtenir la longueur de la colonne. Pour moi, cela semble incroyablement moche. De plus, si le tableau a été défini comme:
test = new int[0][10];
Ensuite, le code échouerait en essayant d'obtenir la longueur. Existe-t-il une manière différente (plus intelligente) de faire cela?
java
arrays
multidimensional-array
user432209
la source
la source
Réponses:
Considérer
Les longueurs de colonne diffèrent par ligne. Si vous sauvegardez certaines données par un tableau 2D de taille fixe, fournissez des getters aux valeurs fixes dans une classe wrapper.
la source
Un tableau 2D n'est pas une grille rectangulaire. Ou peut-être mieux, il n'existe pas de tableau 2D en Java.
Les sorties
Les tableaux
test
ettest2
sont (plus ou moins) les mêmes.la source
C'était vraiment difficile de se souvenir de ça
Comprenons pourquoi il en est ainsi et comment nous pouvons le résoudre lorsque nous avons un problème de tableau. À partir du code ci-dessous, nous pouvons voir que les lignes = 4 et les colonnes = 3:
arr
contient plusieurs tableaux, et ces tableaux peuvent être disposés verticalement pour obtenir le nombre de colonnes. Pour obtenir le nombre de lignes, nous devons accéder au premier tableau et considérer sa longueur. Dans ce cas, nous accédons à [1, 1, 1, 1] et donc, le nombre de lignes = 4. Lorsque vous rencontrez un problème où vous ne pouvez pas voir le tableau, vous pouvez visualiser le tableau sous forme de rectangle avec n X m dimensions et conclure que nous pouvons obtenir le nombre de lignes en accédant au premier tableau puis à sa longueur. L'autre (arr.length
) est pour les colonnes.la source
Java vous permet de créer des «tableaux irréguliers» où chaque «ligne» a des longueurs différentes. Si vous savez que vous avez un tableau carré, vous pouvez utiliser votre code modifié pour vous protéger contre un tableau vide comme celui-ci:
la source
Si vous possédez ce tableau:
Tu peux le faire:
= 2
= 2
= 2
= 3
= 4
la source
Il n'y a pas de méthode plus propre au niveau du langage car tous les tableaux multidimensionnels ne sont pas rectangulaires. Des tableaux irréguliers (différentes longueurs de colonne) sont parfois nécessaires.
Vous pouvez facilement créer votre propre classe pour résumer les fonctionnalités dont vous avez besoin.
Si vous n'êtes pas limité aux tableaux, alors peut-être que certaines des différentes classes de collection fonctionneraient également, comme un Multimap .
la source
.length = nombre de lignes / longueur de colonne
[0] .length = nombre de colonnes / longueur de ligne
la source
Essayez ce programme suivant pour 2d array en java:
la source
la source
Avec
Java 8
, vous permet de faire quelque chose de plus élégant comme celui-ci:la source
la source