Dynamique déclaration de tableau en java
quelqu'un peut me dire l'erreur dans ce java déclaration String[][] t=new String[15][15];
cela fonctionne bien et si j'utilise String[][] t=new String[][];
parce que j'ai besoin de déclarer la variable t aussi dynamique que je ne suis pas sûr de savoir comment beaucoup de valeurs que je vais stocker dans t.
Vous devez vous connecter pour publier un commentaire.
Utiliser ArrayList (ou autre objet de tableau qui peut gérer n'importe quel nombre d'objets). Un tableau java a toujours une longueur fixe depuis la mémoire seront réservées pour le tableau.
ArrayList qui crée un tel tableau pour stocker les objets. De vous ajouter plus de abjet que le courant de la réservé la taille de la matrice de ArrayList permettra de créer un nouveau grand array (+50% si je ne me trompe pas). Il existe d'autres implémentations de cette loi un peu différente (par exemple, ils créent un nouveau tableau de 100% de l'original lorsque le tableau est complet. Si la performance est vraiment important pour vous que vous pouvez regarder dans cette.
s = t[3][12];
devients = t.get(3).get(12);
HashMap<String, String> hashMap = new HashMap<String, String>();
Si vous ne savez pas quelle taille il faut simplement déclarer que
et une fois que vous savez à quel point il a besoin pour être que vous pouvez faire (avant d'essayer d'utiliser le tableau)
Si vous n'êtes jamais sûr de savoir comment big le tableau doivent être, vous aurez besoin d'utiliser quelque chose comme une Liste de Listes.
String[][] t= null;
j'obtiens une erreur que l'Exception dans le thread "main" java.lang.NullPointerException lors de l'utilisationt[0][0]="ana"
t = new String[sizeX][sizeY];
après vous avez découvert ce que les dimensions doivent être, mais avant votret[0][0] =
affectation.En Java tableau les objets sont toujours de longueur fixe. Une fois que vous avez alloué entre eux vous ne pouvez pas modifier leur taille. Un tableau variable peut être fait pour pointer vers les différents objets tableau de taille différente. De sorte que vous pouvez allouer:
qui ne pointe pas vers un objet et d'allouer un objet plus tard, une fois que vous connaissez la taille:
Si vous avez besoin d'une structure dont la taille peut changer, vous êtes beaucoup mieux d'utiliser ArrayList, qui peut être redimensionné dynamiquement.
Déclarer comme
String [][]t = null;
Et Réinitialiser avec longueur réelle une fois que vous l'obtenez.
Un Vecteur peut se développer aussi:
Puis d'appeler la méthode Add pour ajouter des éléments dans le vecteur.
Comme bemace dit, juste parce que vous êtes déclarant la variable ne signifie pas que vous devez les initialiser immédiatement.
Comme dit Mark, les tableaux ont une taille fixe. Une fois qu'un tableau est initialisé(non déclaré), initialisé) il a une taille fixe.
Donc, il y a deux possibilités:
Soit vous savez comment big le tableau doit être avant que vous avez besoin pour commencer à l'utiliser, dans ce cas, vous pouvez simplement retarder votre initialisation comme suggéré par bemace.
Ou vous ne savez pas quelle taille il faut avant de commencer à l'utiliser, dans ce cas, vous devez utiliser un dynamiquement des données de taille de la structure(s). Découvrez les Collections Java API:
tutoriel
référence de l'api
Il y a plusieurs bonnes réponses déjà, mais il a maintenant été révélé dans un commentaire à Marque Baijens réponse que le but de cette question est que raju besoin d'un clé multi-valeur cartographie.
Marque suivi de ce commentaire en suggérant raju utiliser un
HashMap<String, String> hashMap = new HashMap<String, String>();
— cependant, cela ne fonctionne que pour une seule paire clé-valeur.Ce que raju besoins est un
L'ajout de la première valeur d'une clé nécessite l'initialisation d'une Liste pour que seau, tandis que l'ajout de valeurs nécessite l'extraction de la liste existante et ajouter la nouvelle valeur.
Note j'ai utilisé
Collection<String>
dans la déclaration, de sorte qu'il pourrait être une Liste si l'ordre des valeurs est importante, ou il pourrait être un Jeu pour empêcher la duplication des valeurs sous la même clé.Ce serait probablement la meilleure mise en œuvre en tant que Classe elle-même, peut-être
donc l'initialisation de la Liste sur le premier
put(key, value)
et la suite.add(value)
à la liste pourrait être caché dans la mise en œuvre.