java

Java – Clonar arreglo

Hoy te enseñaré cómo clonar o crear una copia de un arreglo en Java. Es decir, a partir de un arreglo, crear uno nuevo (eliminando la referencia al original) con los mismos elementos y misma longitud.

En Java, como bien sabemos, los arreglos se pasan por referencia cuando los enviamos como argumentos a otras funciones. De modo que si modificamos un arreglo dentro de una función, el cambio se reflejará en el método desde donde la llamamos.

Por ello es que en este post te mostraré la forma fácil de eliminar esa referencia y crear una copia del arreglo.

Copiar arreglo con arraycopy

Vamos al código. Para copiar un arreglo podemos invocar a System.arraycopy. Los argumentos en orden son:

  1. Arreglo origen
  2. Posición desde dónde comenzar a copiar en el arreglo origen
  3. Arreglo de destino (donde se va a crear la copia)
  4. Posición del segundo arreglo para indicar desde dónde comenzar a colocar los elementos del origen
  5. Cantidad de elementos a copiar

Entonces para crear una copia completa, sería:

System.arraycopy(arregloOrigen, 0, arregloDestino, 0, arregloOrigen.length);

De modo que empezamos desde 0 y copiamos la cantidad de elementos que haya en el original.

Ejemplo

Para terminar el post veamos un ejemplo. El código Java queda así:

public static void main(String[] args) {
    int[] numeros = { 10, 50, 12, 55 };
    // Alojar espacio
    int[] copiaDeNumeros = new int[numeros.length];
    // Clonar
    System.arraycopy(numeros, 0, copiaDeNumeros, 0, numeros.length);
    // Imprimir para demostrar que tienen los mismos elementos
    for (int i = 0; i < numeros.length; i++) {
        System.out.printf("Dentro de arreglo 1 en la posición %d existe %d y en el arreglo 2 existe %d\n", i,
                numeros[i], copiaDeNumeros[i]);
    }
}

Estoy declarando el arreglo en la línea 2, alojando espacio para la copia en la línea 4 y haciendo la copia en la línea 6.

Si te preguntas para qué sirve clonar un array en Java, te explico un pequeño ejemplo. Cuando se quiere ordenar un arreglo, éste se modifica internamente, así que si quieres mantener una copia del original debes crear un clon y después ordenar el clon.

Estoy aquí para ayudarte 🤝💻


Estoy aquí para ayudarte en todo lo que necesites. Si requieres alguna modificación en lo presentado en este post, deseas asistencia con tu tarea, proyecto o precisas desarrollar un software a medida, no dudes en contactarme. Estoy comprometido a brindarte el apoyo necesario para que logres tus objetivos. Mi correo es parzibyte(arroba)gmail.com, estoy como@parzibyte en Telegram o en mi página de contacto

No te pierdas ninguno de mis posts 🚀🔔

Suscríbete a mi canal de Telegram para recibir una notificación cuando escriba un nuevo tutorial de programación.
parzibyte

Programador freelancer listo para trabajar contigo. Aplicaciones web, móviles y de escritorio. PHP, Java, Go, Python, JavaScript, Kotlin y más :) https://parzibyte.me/blog/software-creado-por-parzibyte/

Entradas recientes

Desplegar PWA creada con Vue 3, Vite y SQLite3 en Apache

Ya te enseñé cómo convertir una aplicación web de Vue 3 en una PWA. Al…

3 días hace

Arquitectura para wasm con Go, Vue 3, Pinia y Vite

En este artículo voy a documentar la arquitectura que yo utilizo al trabajar con WebAssembly…

3 días hace

Vue 3 y Vite: crear PWA (Progressive Web App)

En un artículo anterior te enseñé a crear un PWA. Al final, cualquier aplicación que…

3 días hace

Errores de Comlink y algunas soluciones

Al usar Comlink para trabajar con los workers usando JavaScript me han aparecido algunos errores…

3 días hace

Esperar promesa para inicializar Store de Pinia con Vue 3

En este artículo te voy a enseñar cómo usar un "top level await" esperando a…

3 días hace

Solución: Apache – Server unable to read htaccess file

Ayer estaba editando unos archivos que son servidos con el servidor Apache y al visitarlos…

4 días hace

Esta web usa cookies.