Copiar arrays en Java

19/Jun/2007 Java , , , , 7 Comentarios

Muchas veces nos vamos a encontrar ante la disyuntiva de tener que copiar los elementos de un array en otros. Normalmente será para manipular el contenido del mismo guardando en uno de los arrays los datos originales.

Asumida ya la situación, lo primero que se nos ocurriría, independientemente del lenguaje en el que nos encontremos, será el montar un algoritmo que recorriendo el primer array vaya copiando dichos elementos en el segundo.

En Java nos quedaría un código como este:

  1. for (int x=0;x<aOrigen.length;x++)
  2. aDestino[x] = aOrigen[x];

En este sentido nada que objetar, ya que es muy buena práctica de programación. Pero todo buen programador tiene que tener en mente el concepto de "reutilización". No "reutilización" cómo copia (o fusilamiento -argot de muchos programadores-) del código. Sino "reutilización" pensando en que alguien ya puede haberse encontrado el problema y haberle dado ya una solución.

Para poder reutilizar tenemos que ser conscientes de lo que el entorno en el que estamos nos ofrece. Y en el caso de Java, es la librería del sistema la que nos ofrece una función para la copia de arrays. Como vemos en el siguiente código:

  1. System.arrayCopy(aOrigen,inicioArrayOrigen,aDestino,
  2. inicioArrayDestino,numeroElementosACopiar);

Hay que tener cuidado la función arrayCopy ya que esta nos puede devolver las siguientes excepciones: IndexOutOfBoundsException si intentamos copiar fuera del área reservado para el array, ArrayStoreException si intentamos copiar arrays de diferente tipo o NullPointerException si alguno de los array es nulo (vamos, no inicializado).

Vídeos sobre Java


Difunde el Conocimiento

Si te ha gustado el artículo o te ha sido de utilidad, no dejes de compartirlo con tus amigos en las redes sociales... Te estaremos muy agradecidos. :-D

7 comentarios en “Copiar arrays en Java”

Víctor Cuervo

Manuel Luis Morales

necesito que alguien me ayude con unos programa de java, porq no le entiendo a nada , plis. …..

Víctor Cuervo

yodelkis frometa

tengo un problema, tengo un arreglo tridimencional, nesesito desir cual es la fila que tiene mayor valor, si hay alguien que pueda ayudarme favor me publiquelo.

Víctor Cuervo

Cabo

como estan me urge tener la linea de codigo de un programa que incluya ventanas que habran otras aplicaciones para tenerlo como modelo y estudiar este tema mas a fondo. en los libros me dan un una idea pero no es como tener un ejemplo bien desarrollado. ojala me puedan ayudar.

Víctor Cuervo

lineadecodigo

@Juan Carlos,

He publicado un ejemplo del código en “Copiar dos arrays en uno con Java”.

Espero te ayude más.

Víctor Cuervo

lineadecodigo

En la segunda copia sería desde bytes.length y no desde bytes.length+1.

Tu código quedaría de la siguiente forma:

System.arraycopy(bytes,0,bytes2,0,bytes.length);
System.arraycopy(bytes1,0,bytes2,bytes.length,bytes1.length);

De todas maneras me parece un buen ejemplo. A ver si me pongo a publicarlo como hacerlo. Seguro que a más de uno le es interesante.

Víctor Cuervo

Juan Carlos

Agradezco mucho tu buena y clara esplicación pero tengo una pregunta que plantear.

Quisiera saber si al usar copyarray este limpia el arreglo destino y solo deja los datos nuevos o si yo puedo almacenar varios arreglos en uno solo. lo pregunto porque he intentado tomar dos arreglos byte [] x y byte[] y los quiero a los dos en byte[] z pero cuando hago la copyarray solo me deja el ultimo la forma en que lo hago es la siguinete;
System.arraycopy(bytes,0,bytes2,0,bytes.length);
System.arraycopy(bytes1,0,bytes2,bytes.length+1,bytes1.length);
en que puedo estar fallando?

¿Algo que nos quieras comentar?

Déjanos tu comentario, no te preocupes que tu email no será publicado

*

*