Cargando

Ir a contenido


 


Java - Copiando Arrays

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


Escrito por el may 24 2014 23:18 java


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:


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 ha gustado y ayudado este Tutorial?
Puedes premiar al autor pulsando este botón para darle un punto positivo
  • -
  • 0
10
VOTA
5
100%
4
0%
3
0%
2
0%
1
0%

  Información

  •   Publicado may 24 2014 23:18
  •   Actualizado may 26 2014 11:12
  •   Visitas 2.5K
  •   Nivel
    Avanzado



Tutoriales Relacionados


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!
Demuestra que eres experto!
  ESCRIBIR TUTORIAL
Suscribirse