Aparte de recorrer cada elemento de una matriz y configurar cada uno como nulo, ¿hay una función nativa en Java/procesamiento para simplemente vaciar una matriz (o destruirla, para poder volver a declararla? como una nueva matriz)?Vaciar una matriz en Java/procesamiento
Respuesta
Simplemente puede asignar null
a la referencia. (Esto funciona para cualquier tipo de matriz, no sólo ints
)
int[] arr = new int[]{1, 2, 3, 4};
arr = null;
Esta voluntad 'clara a cabo' la matriz. También puede asignar una nueva matriz para que la referencia si quieres:
int[] arr = new int[]{1, 2, 3, 4};
arr = new int[]{6, 7, 8, 9};
Si usted está preocupado por las pérdidas de memoria, no se. El recolector de basura limpiará las referencias dejadas por la matriz.
Otro ejemplo:
float[] arr = ;// some array that you want to clear
arr = new float[arr.length];
Esto creará un nuevo float[]
inicializado con el valor por defecto para el flotador.
obtengo el error nullpointerexception cuando simplemente vacío una matriz asignándola a nulo ... la idea es que la misma matriz se reutilice en cada iteración, pero los números no importan después de cada iteración, por lo que se puede vaciar. – ina
no es tan seguro ya que romperá todas las partes del código que usa esa matriz y arrojará una 'NullPointerException' – Jack
@ina, si asigna 'null' a la matriz, ya no podrá usarla. Deberá volver a declarar una matriz en esa referencia. Ver mi segundo ejemplo. – jjnguy
Hay
Arrays.fill(myArray, null);
No es que lo hace algo diferente de lo que uno hace en su propia (que acaba de bucle a través de cada elemento y lo establece en null). No es nativo, ya que es el código puro de Java el que realiza esto, pero es una función de biblioteca, si tal vez eso es lo que quería decir.
Por supuesto, esto no le permite cambiar el tamaño de la matriz (a cero), si eso es lo que entiende por "vacío". Los tamaños de matriz son fijos, por lo que si desea que la matriz "nueva" tenga diferentes dimensiones, lo mejor es que reasigne la referencia a una nueva matriz, como lo demuestran las otras respuestas. Mejor aún, use un tipo List
como un ArrayList
que puede tener un tamaño variable.
No hay ninguna razón para recorrer una matriz y 'null' cada entrada. ¿Qué ganas cuando haces esto simplemente por reasignar un nuevo valor a la matriz? (Perdón por el comentario sobre la respuesta anterior). – jjnguy
@jjnguy: Pude ver una implementación de una lista de arreglos haciendo esto para la operación clara. –
En lugar de simplemente hacer 'backingStore = new Type [size]'? – jjnguy
array = new String[array.length];
Solo quiero agregar algo al comentario de Mark. Si desea reutilizar la matriz sin asignación adicional, simplemente úsela nuevamente y anule los valores existentes con valores nuevos. Funcionará si llena la matriz secuencialmente. En este caso, solo recuerde el último elemento inicializado y use array hasta este índice. No importa que haya algo de basura al final de la matriz.
Esto es exactamente lo que' ArrayList' hace por usted detrás de las escenas. Funciona para hacerlo usted mismo, pero es más engorroso y fácil de cometer errores. IMO, mejor usar una clase 'Collection'.Pero si tiene que usar una matriz directamente, esta es una buena observación. –
El borrado más rápido que Arrays.fill es con esto (desde Fast Serialization Lib).Sólo tiene que utilizar arraycopy (es nativo) para borrar la matriz:
static Object[] EmptyObjArray = new Object[10000];
public static void clear(Object[] arr) {
final int arrlen = arr.length;
clear(arr, arrlen);
}
public static void clear(Object[] arr, int arrlen) {
int count = 0;
final int length = EmptyObjArray.length;
while(arrlen - count > length) {
System.arraycopy(EmptyObjArray,0,arr,count, length);
count += length;
}
System.arraycopy(EmptyObjArray,0,arr,count, arrlen -count);
}
Crear matriz:
ArrayList<String> User = new ArrayList<String>();
Esta matriz se puede borrar
User.clear();
Esto no es una matriz ... esta es una ArrayList que es una implementación de la Lista. – Shadi
Tome doble matriz como un ejemplo, si la matriz de entrada inicial values
es no vacia, el siguiente fragmento de código es superior al directo tradicional for-loop
en comp. lexity:
public static void resetValues(double[] values) {
int len = values.length;
if (len > 0) {
values[0] = 0.0;
}
for (int i = 1; i < len; i += i) {
System.arraycopy(values, 0, values, i, ((len - i) < i) ? (len - i) : i);
}
}
yo era capaz de hacer eso con las 2 líneas siguientes, que tenía una matriz llamada selected_items utilizados para obtener todos los elementos seleccionados en un dataTable
selected_items = null; selected_items = [];
- 1. ¿Cómo vaciar una matriz de caracteres?
- 2. ¿Cómo vaciar una lista en C#?
- 3. ¿Cómo vaciar/destruir una sesión en rieles?
- 4. Cómo borrar/vaciar el cartón en la vista Vaciar 0isarpear
- 5. Cómo vaciar correctamente un NSMutableArray
- 6. Forma correcta de vaciar una C-String
- 7. Cómo vaciar una tubería usando bash
- 8. ¿Cómo vaciar una base de datos SQL?
- 9. Cómo vaciar un TFileStream?
- 10. Vaciar a ListView
- 11. Inicialice una cadena en C para vaciar la cadena
- 12. ¿Cuál es la mejor manera de vaciar un vector o matriz en AS3?
- 13. Cómo borrar o vaciar la matriz de colección en Symfony doctrina
- 14. Cómo vaciar el buffer io en Erlang?
- 15. Cómo vaciar/vaciar Windows ¿LEER el caché de disco en C#?
- 16. ¿Cómo vaciar un socket en python?
- 17. ¿Cuándo vaciar un archivo en Go?
- 18. cómo vaciar firefox dom localstorage
- 19. Cómo borrar/dejar/vaciar una colección MongoDb con Casbah
- 20. SSIS ISNULL para vaciar la cadena
- 21. ¿Vaciar el vector global entre llamadas?
- 22. jquery cómo vaciar el campo de entrada
- 23. ¿Cómo vaciar las aplicaciones de iPad?
- 24. ¿La mejor manera de vaciar el stringstream?
- 25. Convertir una matriz 1D en una matriz 2D en numpy
- 26. Transformar una matriz 3D en una matriz en R
- 27. Vaciar un archivo mientras está en uso en Linux
- 28. cómo vaciar un archivo usando Python
- 29. Cómo vaciar el contenido de un div
- 30. Inicializar la matriz en una matriz
¿Qué tipo de matriz? – Adam
algo como esto - 'float [] xco = new float [1024];' – ina
Java está diseñado para que no tenga que preocuparse por esto. Debería poder organizar su código para que no tenga que hacer nada. Para los pocos ejemplos en los que podría hacer una diferencia, se pueden refactorizar fácilmente, por lo que no es necesario. –