Categorías
Array Java

System.arraycopy () frente a Arrays.copyOf () en Java

Si queremos copiar una matriz, podemos usar System.arraycopy() o Arrays.copyOf(). En esta publicación, utilizo un ejemplo simple para demostrar la diferencia entre los dos.

1. Ejemplos de código simple

System.arraycopy ()

int[] arr = {1,2,3,4,5};
 
int[] copied = new int[10];
System.arraycopy(arr, 0, copied, 1, 5);//5 is the length to copy
 
System.out.println(Arrays.toString(copied));

Producción:

[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[0, 1, 2, 3, 4, 5, 0, 0, 0, 0]

Arrays.copyOf ()

int[] copied = Arrays.copyOf(arr, 10); //10 the the length of the new array
System.out.println(Arrays.toString(copied));
 
copied = Arrays.copyOf(arr, 3);
System.out.println(Arrays.toString(copied));

Producción:

[1, 2, 3, 4, 5, 0, 0, 0, 0, 0]
[1, 2, 3]

2. La principal diferencia

La diferencia es que Arrays.copyOf no solo copia elementos, también crea una nueva matriz. System.arrayCopy copia en una matriz existente.

Si leemos el código fuente de Arrays.copyOf (), podemos ver que usa System.arraycopy().

public static int[] copyOf(int[] original, int newLength) { 
   int[] copy = new int[newLength]; 
   System.arraycopy(original, 0, copy, 0, Math.min(original.length, newLength)); 
   return copy; 
}
  LeetCode - Bits inversos (Java)

Por Programación.Click

Más de 20 años programando en diferentes lenguajes de programación. Apasionado del code clean y el terminar lo que se empieza. ¿Programamos de verdad?

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *