Cargando



Java - Copiando Arrays

En este tutorial veremos como copiar un array en un programa de Java.


may 25 2014 00:18
Avanzado
may 26 2014 12:12
Una vez dominados los conceptos de array y de cómo llenarlony como recorrer uno, también seguramente llegaremos a necesitar generar copias de los arrays, ya que muchas veces necesitaremos procesar el contenido de dicho array sin alterar un original que utilizaremos para otros fines.

A pesar que copiar puede sonar como una actividad muy sencilla realmente es un poco más compleja que asignar el valor del array a otra variable declarada de este tipo.

Copiando Arrays

Como parte de la lógica de nuestros programas, probablemente en algún momento necesitemos copiar un array en una variable diferente, de forma de poder trabajar con los elementos en otra instancia del programa, como mencionamos al inicio hacer una asignación de la variable que contiene al array en otro no es la solución adecuada.

Supongamos que hacemos la asignación de la siguiente forma:

varArrar2 = varArray1;

En este caso no hay un error sintáctico por lo que la instrucción funciona sin problemas, inclusive si intentamos recorrer varArray2 obtendremos los valores que sabemos que tenemos en varArray1, se preguntaran dónde está el problema entonces, el problema es que en esta instrucción lo que hizo Java fue copiar la referencia al contenido del primer array, por lo que si hacemos un cambio en cualquiera de los dos ambos verán el cambio.

Como vemos este no es un método muy efectivo a menos que lo que queramos sea copiar la referencia efectivamente.

Forma correcta de copiar un array
Existen varias formas para poder realizar la copia de una array, utilizando un bucle que recorra el primer array e ir asignando los valores al segundo, utilizando el método estático arraycopy que está contenido en la clase System y por último utilizando el método clone, sin embargo este último es un poco más avanzado de lo que estamos viendo acá.


Utilizando un Bucle

Este es el método más sencillo de todos, aunque es un poco laborioso cumple con el objetivo de forma correcta y nos permite obtener un nuevo array que sería la copia del original y totalmente independiente de este, para lograr hacer esta copia vamos a realizar lo siguiente:

int[] varArray1 = {2, 3, 1, 5, 10};
int[] varArray2 = new int[varArray1.length];
for (int i = 0; i < varArray1.length; i++) {
		 varArray2[i] = varArray1[i];
}

Como vemos es algo muy sencillo, tenemos nuestro primer array con una cantidad de valores ya asignados en su contenido, creamos un segundo array y le indicamos que su dimensión va a ser la longitud del array original y finalmente con un ciclo for vamos asignando a nuestro nuevo array el valor que corresponde a la posición del ciclo del primer array.

Utilizando el Método arraycopy

Una forma más sencilla y que utiliza un poco menos de código es el método estático arraycopy, este método rompe con la convención de nombres de Java sin embargo funciona correctamente, para utilizarlo debemos hacer lo siguiente:

System.arraycopy(varArray1, varArray1_pos, varArray2, varArray2_pos, longitud);

Como vemos en una sola linea resolvemos el problema, el método recibe en su primer argumento el array que vamos a copiar, luego recibe la posición inicial desde donde vamos a copiar, luego el array destino de la copia, su posición inicial y por último la longitud de la copia:

java_copiando_arrays.jpg


Para finalizar, vimos que copiar un array a pesar que no es tan sencillo como una asignación de variables, es una tarea relativamente fácil utilizando los métodos descritos en este tutorial.

¿Te ayudó este Tutorial?


Sin comentarios, sé el primero!

No esperes más y entra en Solvetic
Deja tus comentarios y aprovecha las ventajas de la cuenta de usuario ¡Únete!

X