La taille d'un tableau ne peut pas être modifiée. Si vous voulez un plus grand tableau, vous devez en instancier un nouveau.
Une meilleure solution serait d'utiliser un ArrayList
qui peut se développer selon vos besoins. La méthode ArrayList.toArray( T[] a )
vous rend votre tableau si vous en avez besoin sous cette forme.
List<String> where = new ArrayList<String>();
where.add( ContactsContract.Contacts.HAS_PHONE_NUMBER+"=1" );
where.add( ContactsContract.Contacts.IN_VISIBLE_GROUP+"=1" );
Si vous devez le convertir en un simple tableau ...
String[] simpleArray = new String[ where.size() ];
where.toArray( simpleArray );
Mais la plupart des choses que vous faites avec un tableau, vous pouvez aussi le faire avec cette ArrayList:
// iterate over the array
for( String oneItem : where ) {
...
}
// get specific items
where.get( 1 );
Utilisez un
List<String>
, comme unArrayList<String>
. Il peut être développé dynamiquement, contrairement aux tableaux (voir: Effective Java 2nd Edition, Item 25: Prefer lists to arrays ).Si vous insistez pour utiliser des tableaux, vous pouvez utiliser
java.util.Arrays.copyOf
pour allouer un tableau plus grand pour accueillir l'élément supplémentaire. Ce n'est vraiment pas la meilleure solution, cependant.C'est
O(N)
parappend
.ArrayList
, d'autre part, aO(1)
amorti le coût par opération.Voir également
la source
ArrayList
fait en interne.Apache Commons Lang a
il renvoie un nouveau tableau, mais si vous travaillez vraiment avec des tableaux pour une raison quelconque, cela peut être le moyen idéal de le faire.
la source
Il y a une autre option que je n'ai pas vue ici et qui n'implique pas d'objets ou de collections "complexes".
la source
Il n'y a pas de méthode
append()
sur les tableaux. Au lieu de cela, comme déjà suggéré, un objet List peut répondre au besoin d'insérer dynamiquement des éléments, par exemple.Ou si vous souhaitez vraiment utiliser un tableau:
mais alors c'est une taille fixe et aucun élément ne peut être ajouté.
la source
Comme l'a dit tangens, la taille d'un tableau est fixe. Mais vous devez d'abord l'instancier, sinon ce ne sera qu'une référence nulle.
Ce tableau ne peut contenir que 10 éléments. Vous ne pouvez donc ajouter une valeur que 10 fois. Dans votre code, vous accédez à une référence nulle. C'est pourquoi ça ne marche pas. Afin d'avoir une collection en croissance dynamique, utilisez ArrayList.
la source
la source
J'ai fait ce code! Il fonctionne comme un charme!
J'espère que tu aimes!!
la source
Vous devez utiliser une liste de collection. Vous ne pouvez pas redimensionner un tableau.
la source
Si vous souhaitez stocker vos données dans un tableau simple comme celui-ci
et vous voulez y ajouter des éléments comme des nombres, veuillez nous StringBuilder qui est beaucoup plus efficace que la concaténation de chaîne.
C'est une bien meilleure méthode pour construire votre chaîne et la stocker dans votre tableau 'where'.
la source
Ajout de nouveaux éléments au tableau String.
la source
<code>
balise et cela a eu des problèmes avec les types génériques. S'il vous plaît essayez d'éviter cette balise, car ... il a des problèmes, et indentez votre code avec 4 espaces blancs pour obtenir la mise en forme appropriée. Je l'ai fait pour votre question :).Il existe de nombreuses façons d'ajouter un élément à un tableau. Vous pouvez utiliser un temp
List
pour gérer l'élément, puis le reconvertir enArray
ou vous pouvez utiliser lejava.util.Arrays.copyOf
et le combiner avec des génériques pour de meilleurs résultats.Cet exemple vous montrera comment:
Pour utiliser cette méthode, il vous suffit de l'appeler comme ceci:
Si vous souhaitez fusionner deux tableaux, vous pouvez modifier la méthode précédente comme ceci:
Vous pouvez maintenant appeler la méthode comme ceci:
Comme je l'ai mentionné, vous pouvez également utiliser des
List
objets. Cependant, il faudra un petit hack pour le sécuriser comme ceci:Vous pouvez maintenant appeler la méthode comme ceci:
la source
newArray[elements.length] = element;
, tu veux direnewArray[elements.length - 1] = element;
?Je ne suis pas très expérimenté en Java, mais on m'a toujours dit que les tableaux sont des structures statiques qui ont une taille prédéfinie. Vous devez utiliser une ArrayList ou un Vector ou toute autre structure dynamique.
la source
vous pouvez créer une liste de tableaux et l'utiliser
Collection.addAll()
pour convertir le tableau de chaînes en liste de tableauxla source
Vous pouvez simplement faire ceci:
la source
Si l'on veut vraiment redimensionner un tableau, vous pouvez faire quelque chose comme ceci:
la source
La taille du tableau ne peut pas être modifiée. Si vous devez utiliser un tableau, vous pouvez utiliser:
la source
Il est également possible de pré-allouer une taille de mémoire suffisamment grande. Voici une implémentation de pile simple: le programme est censé produire les sorties 3 et 5.
la source