¿Cómo añadir nuevos elementos a un array?
Tengo el siguiente código:
String[] where;
where.append(ContactsContract.Contacts.HAS_PHONE_NUMBER + "=1");
where.append(ContactsContract.Contacts.IN_VISIBLE_GROUP + "=1");
Esos dos apéndices no están compilando. ¿Cómo podría funcionar correctamente?
271
3
El tamaño de un array no se puede modificar. Si quieres un array más grande tienes que instanciar uno nuevo.
Una mejor solución sería usar un
ArrayList
que puede crecer según lo necesites. El métodoArrayList.toArray( T[] a )
te devuelve tu array si lo necesitas de esta forma.Si necesitas convertirlo en un simple array...
Pero la mayoría de las cosas que haces con un array las puedes hacer también con este ArrayList:
Utilice una
List
, como unArrayList
. Es dinámicamente creíble, a diferencia de los arrays (ver: Java Efectivo 2ª Edición, Punto 25: Prefiera las listas a los arrays).Si insiste en utilizar arrays, puede utilizar
java.util.Arrays.copyOf
para asignar un array más grande para acomodar el elemento adicional. Sin embargo, esta no es la mejor solución.Esto es
O(N)
porappend
. Por otro lado,ArrayList
tiene un coste amortizado deO(1)
por operación.Ver también
Como dijo tangens, el tamaño de un array es fijo. Pero hay que instanciarlo primero, si no será sólo una referencia nula.
Esta matriz puede contener sólo 10 elementos. Así que usted puede agregar un valor sólo 10 veces. En tu código estás accediendo a una referencia nula. Por eso no funciona. Para tener una colección que crezca dinámicamente, usa el ArrayList.