El tamaño de una matriz no se puede modificar. Si desea una matriz más grande, debe crear una instancia nueva.
Una mejor solución sería usar una ArrayList
que pueda crecer según lo necesite. El método ArrayList.toArray( T[] a )
le devuelve su matriz si la necesita en este formulario.
List<String> where = new ArrayList<String>();
where.add( ContactsContract.Contacts.HAS_PHONE_NUMBER+"=1" );
where.add( ContactsContract.Contacts.IN_VISIBLE_GROUP+"=1" );
Si necesita convertirlo en una matriz simple ...
String[] simpleArray = new String[ where.size() ];
where.toArray( simpleArray );
Pero la mayoría de las cosas que haces con una matriz también puedes hacerlas con esta ArrayList:
// iterate over the array
for( String oneItem : where ) {
...
}
// get specific items
where.get( 1 );
Use un
List<String>
, como unArrayList<String>
. Es dinámicamente cultivable, a diferencia de los arreglos (ver: Java 2nd Edition, Artículo 25: Prefiere listas a los arreglos ).Si insiste en usar matrices, puede usar
java.util.Arrays.copyOf
para asignar una matriz más grande para acomodar el elemento adicional. Sin embargo, esta no es la mejor solución.Esto es
O(N)
porappend
.ArrayList
, por otro lado, haO(1)
amortizado el costo por operación.Ver también
fuente
ArrayList
hace internamente.Apache Commons Lang tiene
devuelve una nueva matriz, pero si realmente está trabajando con matrices por alguna razón, esta puede ser la forma ideal de hacerlo.
fuente
Hay otra opción que no he visto aquí y que no involucra objetos o colecciones "complejas".
fuente
No hay método
append()
en matrices. En cambio, como ya se sugirió, un objeto List puede satisfacer la necesidad de insertar elementos dinámicamente, por ejemplo.O si realmente desea utilizar una matriz:
pero este es un tamaño fijo y no se pueden agregar elementos.
fuente
Como dijeron los tangenos, el tamaño de una matriz es fijo. Pero primero debe crear una instancia, de lo contrario, será solo una referencia nula.
Esta matriz puede contener solo 10 elementos. Por lo tanto, puede agregar un valor solo 10 veces. En su código está accediendo a una referencia nula. Por eso no funciona. Para tener una colección que crezca dinámicamente, use ArrayList.
fuente
fuente
¡He hecho este código! ¡Funciona a las mil maravillas!
¡¡Espero que te guste!!
fuente
Necesita usar una Lista de colecciones. No puede cambiar el tamaño de una matriz.
fuente
Si desea almacenar sus datos en una matriz simple como esta
y desea agregarle algunos elementos como números, por favor, use StringBuilder, que es mucho más eficiente que concatenar cadenas.
Este es un método mucho mejor para construir su cadena y almacenarla en su matriz 'where'.
fuente
Agregar nuevos elementos a la matriz de cadenas.
fuente
<code>
etiqueta y esto tuvo problemas con los tipos genéricos. Intenta evitar esta etiqueta, ya que ... tiene problemas, y sangra tu código con 4 espacios en blanco para obtener el formato adecuado. Lo hice por tu pregunta :).Hay muchas formas de agregar un elemento a una matriz. Puede usar una temperatura
List
para administrar el elemento y luego convertirlo nuevamenteArray
o puede usar eljava.util.Arrays.copyOf
y combinarlo con genéricos para obtener mejores resultados.Este ejemplo le mostrará cómo:
Para usar este método solo necesita llamarlo así:
Si desea fusionar dos matrices, puede modificar el método anterior de esta manera:
Ahora puede llamar al método de esta manera:
Como mencioné, también puedes usar
List
objetos. Sin embargo, requerirá un pequeño truco para lanzarlo de esta manera:Ahora puede llamar al método de esta manera:
fuente
newArray[elements.length] = element;
, ¿Te refieresnewArray[elements.length - 1] = element;
?No tengo tanta experiencia en Java, pero siempre me han dicho que las matrices son estructuras estáticas que tienen un tamaño predefinido. Debe usar una ArrayList o un Vector o cualquier otra estructura dinámica.
fuente
puede crear una lista de arrays y usarla
Collection.addAll()
para convertir la matriz de cadenas a su lista de arraysfuente
Simplemente puedes hacer esto:
fuente
Si realmente desea cambiar el tamaño de una matriz, puede hacer algo como esto:
fuente
El tamaño de la matriz no se puede modificar. Si tiene que usar una matriz, puede usar:
fuente
También es posible preasignar un tamaño de memoria suficientemente grande. Aquí hay una implementación simple de la pila: se supone que el programa genera 3 y 5.
fuente