Détails
Comment ajouter de nouveaux éléments à un tableau ?
J'ai le code suivant :
String[] where;
where.append(ContactsContract.Contacts.HAS_PHONE_NUMBER + "=1");
where.append(ContactsContract.Contacts.IN_VISIBLE_GROUP + "=1");
Ces deux ajouts ne sont pas compilés. Comment cela pourrait-il fonctionner correctement ?
271
3
La taille d'un tableau ne peut pas être modifiée. Si vous voulez un tableau plus grand, vous devez en instancier un nouveau.
Une meilleure solution serait d'utiliser un [
ArrayList
][1] qui peut grandir selon vos besoins. La méthodeArrayList.toArray( T[] a )
vous rend votre tableau si vous en avez besoin sous cette forme.Si vous avez besoin de le convertir en un simple tableau...
Mais la plupart des choses que vous faites avec un tableau peuvent aussi être faites avec cette ArrayList :
[1] : http://java.sun.com/javase/7/docs/api/java/util/ArrayList.html
Utilisez une [
List
][1], comme un [ArrayList
][2]. Elle peut croître dynamiquement, contrairement aux tableaux (voir : Effective Java 2e édition, point 25 : Préférer les listes aux tableaux).Si vous insistez pour utiliser des tableaux, vous pouvez utiliser [
java.util.Arrays.copyOf
][3] pour allouer un tableau plus grand pour accueillir l'élément supplémentaire. Ce n'est cependant pas la meilleure solution.C'est
O(N)
parappend
.ArrayList
, d'un autre côté, a un coût amorti deO(1)
par opération.Voir aussi
[Tutoriels Java/Arrays][4]
[Didacticiels Java/L'interface Liste][5]
[1] : http://java.sun.com/javase/7/docs/api/java/util/List.html [2] : http://docs.oracle.com/javase/7/docs/api/java/util/ArrayList.html [3] : http://docs.oracle.com/javase/7/docs/api/java/util/Arrays.html#copyOf%28T%5B%5D,%20int%29 [4] : http://java.sun.com/docs/books/tutorial/java/nutsandbolts/arrays.html [5] : http://java.sun.com/docs/books/tutorial/collections/interfaces/list.html
Comme l'a dit Tangens, la taille d'un tableau est fixe. Mais vous devez d'abord l'instancier, sinon il 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 cela ne fonctionne pas. Afin d'avoir une collection qui croît dynamiquement, utilisez ArrayList.