Java - Création d'un Tableau Undefined
Je cherche à créer un tableau qui sera en mesure de changer la taille au fil du temps en raison de la taille de la matrice est imprévisible et je ne veux pas créer un énorme nombre aléatoire qui sera la mémoire des déchets de sorte que chaque fois qu'un bouton est pressé, j'ai besoin de la matrice de croître d'un.
private String[][] lyricLineInfo = new String[x][5];
À la place de x est l'endroit où le tableau doit pousser sur le bouton poussoir, et 5 est une constante. J'ai donc besoin de la touche x pour grandir par l'un sans déborder. Puis-je le faire en utilisant quelque chose comme cela?
lyricLineInfo[lyricLineInfo.length + 1][4] = fieldLyrics.getText();
De toute façon merci d'avance!
- Vous feriez mieux d'utiliser une liste de tableaux au lieu d'un Tableau.
- Donc, vous voulez un tableau qui doit être copié dans un nouveau tableau à CHAQUE fois que vous ajoutez un élément? Pourquoi ne pas simplement utiliser une ArrayList et être fait avec elle?
- Si la deuxième dimension agit comme interrupteur, ce qui détermine le type de contenu dans la première dimension, alors vous devriez mettre en œuvre en classe avec le problème des champs spécifiques au lieu. Cela réduit de tableau/liste de dimensions par un. exemple:
LyricLineInfo[] lyricLineInfo;
puislyricLineInfo[lineNumber].setLineText(fieldLyrics.getText());
plus lisible que la magie de l'indice 4.
Vous devez vous connecter pour publier un commentaire.
Utiliser un
ArrayList<String[]>
(voir les docs ici). Il augmentera automatiquement. (Il utilise une batterie interne qui ne fait pas croître de seulement 1 quand il en a besoin pour grandir. Depuis de plus en plus est une opération coûteuse, il pousse par certains plus grande quantité de sorte qu'il peut absorber un peu plus d'éléments avant de croître à nouveau.)MODIFIER
Par exemple, voici comment vous pouvez recoder les deux lignes de votre post original:
La deuxième ligne suppose que
fieldLyrics.getText()
renvoie uneString[]
. Si j'ai mal compris votre intention, et elle renvoie une Chaîne de caractères, alors vous pouvez faire ce qui suit:Si le deuxième indice n'est pas toujours 5 long, vous pouvez également avoir une liste de tableaux de ArrayLists:
Alors vous pourriez
lyricLineInfo.add(new ArrayList<String>());
étendre le tableau.EDIT 2
@clankfan1 - Dans votre commentaire, vous avez demandé comment effectuer une opération particulière. Disons que nous sommes à l'aide de la
ArrayList<ArrayList<String>>
structure. Ce serait quelque chose comme ceci:Évidemment, cette logique est susceptible d'être mis dans une méthode distincte.
MODIFIER 3
Si vous avez besoin d'éléments de
lyricLineInfo
pour être de typeString[]
, il est essentiel que chaque élément distinct de matrice. Voici quelques styles de codage pour ajouter des éléments:get
etset
(etadd
à ajouter). (Bien sûr, vous aurez également à changer toutes les déclarations pertinentes etnew
allocations.)lyricLineInfo.get(index)
. Si vous affectez un élément de ce tableau (par exemple,lyricLineInfo.get(index)[4] = "hello"
), qui sera automatiquement clé dans la liste de tableaux, parce que le String[] est encore un élément de la liste. Cela vous aide?String[]
tableau à deux reprises. Peut-être poster le code que vous utilisez comme une nouvelle question et le problème peut être résolu plus rapidement. Inclure le code utilisé pour insérer des valeurs dans la liste de tableaux.Vous pouvez utiliser
java.util.Vector<String[]>
.Utiliser un
ArrayList
comme ceci:ArrayList
s sont flexibles tableaux en java. Lorsque vous voulez ajouter quelque chose à cela:5
que la deuxième taille de la matrice.Utiliser une Liste à la place:
Puis ajouter à la liste que vous utilisez:
et pour vous faire:
Pourquoi ne pensez-vous pas que sur l'utilisation des Collections, si vous avez besoin d'un tableau de taille non définie? 🙂
Vous ne pouvez pas le faire avec un tableau, mais vous pouvez utiliser un objet de la Liste. Vous pouvez essayer quelque chose comme ceci:
Alors, en supposant que fieldLyrics.getText() retourne une Chaîne de caractères[], vous feriez:
Si vous ajoutez de nouveaux éléments et de parcourir tous les éléments de la liste que vous devez utiliser
LinkedList
à la place.Collections sont très utilisés en Java. Vous devriez vérifier Java Collections Cadre - tutoriel