Java中Arrays类的copyOf函数的常见用法介绍
Java中的Arrays类是Java标准库提供的一个工具类,提供了一系列静态方法,用于操作数组。其中的copyOf()方法用于实现数组的复制操作。copyOf()方法有多个重载版本,用于复制不同类型的数组和指定长度的数组。
使用copyOf()方法可以实现以下常见的功能:
1. 复制整个数组:
可以使用copyOf()方法复制一个整个数组,将旧数组的所有元素复制到新数组中。方法的签名如下:
public static <T> T[] copyOf(T[] original, int newLength)
其中,original是要复制的数组,newLength是新数组的长度。方法返回一个新的数组,其中包含原数组的所有元素。如果原数组长度小于新数组长度,那么会在新数组的末尾填充默认值。
例如:
int[] arr1 = {1, 2, 3, 4, 5};
int[] arr2 = Arrays.copyOf(arr1, 10);
上面的代码将arr1数组复制到arr2数组中,新数组的长度为10。由于arr1的长度为5,arr2的前5个元素将与arr1相同,后5个元素将自动填充为默认值。
2. 复制指定长度的数组:
copyOf()方法还有另一个重载版本,可以复制指定长度的数组。方法的签名如下:
public static <T,U> T[] copyOf(U[] original, int newLength, Class<? extends T[]> newType)
其中,original是要复制的数组,newLength是新数组的长度,newType是新数组的类型。方法返回一个新的数组,其中包含原数组的前newLength个元素。
例如:
Integer[] arr1 = {1, 2, 3, 4, 5};
Integer[] arr2 = Arrays.copyOf(arr1, 3, Integer[].class);
上面的代码将arr1数组复制到arr2数组中,新数组的长度为3。arr2数组的前3个元素将与arr1的前3个元素相同。
3. 复制指定范围的数组:
copyOf()方法还有另一个重载版本,可以复制指定范围的数组。方法的签名如下:
public static <T,U> T[] copyOf(U[] original, int from, int to, Class<? extends T[]> newType)
其中,original是要复制的数组,from是起始索引(包含),to是结束索引(不包含),newType是新数组的类型。方法返回一个新的数组,其中包含原数组从from索引到to索引的元素。
例如:
char[] arr1 = {'a', 'b', 'c', 'd', 'e'};
char[] arr2 = Arrays.copyOfRange(arr1, 1, 4, char[].class);
上面的代码将arr1数组复制到arr2数组中,复制的范围是arr1的索引从1到4的元素(包含1不包含4)。arr2数组将包含arr1数组的索引为1、2、3的元素。
4. 复制多维数组:
copyOf()方法可以复制多维数组,只需将多维数组作为原数组传递给方法即可。方法会返回一个新的多维数组,其中包含原数组的所有元素。
例如:
int[][] arr1 = {{1, 2, 3}, {4, 5, 6}};
int[][] arr2 = Arrays.copyOf(arr1, arr1.length);
上面的代码将arr1数组复制到arr2数组中,arr2数组将是一个与arr1数组相同的二维数组。
总结:
Arrays类的copyOf()方法是一个非常方便的数组复制工具,可以用于复制整个数组、复制指定长度的数组、复制指定范围的数组以及复制多维数组。根据不同的需求,选择不同的重载版本即可实现所需要的功能。使用该方法可以避免手动实现数组复制的逻辑,提高代码的简洁性和可读性。
