Java Array copyOf()
El método Arrays.copyOf()
en Java es una función de utilidad proporcionada por la clase java.util.Arrays
. Sirve para crear una nueva matriz copiando el rango de elementos especificado de una matriz existente. Este método es útil para redimensionar matrices, copiar parcialmente matrices y crear copias de seguridad de matrices.
Utilización
Arrays.copyOf()
se suele utilizar cuando necesitas duplicar una matriz con un tamaño diferente o cuando quieres copiar sólo una parte de una matriz. Devuelve una nueva matriz que contiene los elementos copiados, y la matriz original permanece inalterada.
Syntax
public static <T> T[] copyOf(T[] original, int newLength)
original
: La matriz de la que se van a copiar los elementos.newLength
: La longitud de la nueva matriz. Si es mayor que la longitud de la matriz original, la nueva matriz se rellena con valores por defecto.
Ejemplos
Ejemplo 1: Copiar toda una matriz
import java.util.Arrays;
public class CopyOfExample {
public static void main(String[] args) {
int[] originalArray = {1, 2, 3, 4, 5};
int[] copiedArray = Arrays.copyOf(originalArray, originalArray.length);
System.out.println("Original Array: " + Arrays.toString(originalArray));
System.out.println("Copied Array: " + Arrays.toString(copiedArray));
}
}
En este ejemplo, Arrays.copyOf()
se utiliza para crear una copia exacta de originalArray
. La nueva matriz copiedArray
contiene todos los elementos de la matriz original.
Ejemplo 2: Copiar con un tamaño mayor
import java.util.Arrays;
public class CopyOfLargerExample {
public static void main(String[] args) {
int[] originalArray = {1, 2, 3};
int[] extendedArray = Arrays.copyOf(originalArray, 5);
System.out.println("Extended Array: " + Arrays.toString(extendedArray));
}
}
Aquí, Arrays.copyOf()
se utiliza para crear una nueva matriz extendedArray
con una longitud de 5. Los elementos adicionales se inicializan con el valor por defecto de 0
para el tipo int
.
Ejemplo 3: Copiar con un tamaño menor
import java.util.Arrays;
public class CopyOfSmallerExample {
public static void main(String[] args) {
String[] originalArray = {"Java", "Python", "C++", "JavaScript"};
String[] truncatedArray = Arrays.copyOf(originalArray, 2);
System.out.println("Truncated Array: " + Arrays.toString(truncatedArray));
}
}
En este ejemplo, Arrays.copyOf()
crea una nueva matriz truncatedArray
con sólo los dos primeros elementos de originalArray
.
Consejos y buenas prácticas
- Original inmutable: La matriz original no es modificada por
Arrays.copyOf()
, lo que garantiza la integridad de los datos. - Valores por defecto: Cuando la nueva longitud de la matriz es mayor que la original, los nuevos elementos se establecen en valores por defecto (
0
,null
,false
, etc.). - Tipos de matrices:
Arrays.copyOf()
funciona con todos los tipos primitivos y de objetos, lo que la hace versátil para diversos tipos de datos. - Rendimiento: Ten en cuenta el rendimiento al copiar matrices grandes, ya que implica crear una nueva matriz y copiar elementos.
Comprender la copia superficial y profunda
Arrays.copyOf()
produce una copia superficial, en la que se copian las referencias a los elementos originales en lugar de los propios objetos. Es importante recordar esto cuando se trata de estructuras de datos complejas, como matrices 2D o matrices de objetos, en las que los cambios en los objetos de la matriz original pueden reflejarse en la matriz copiada.
Excepciones
NegativeArraySizeException
: Se lanza si el parámetronewLength
es negativo.NullPointerException
: Se lanza si la matrizoriginal
esnull
.