欢迎访问宙启技术站
智能推送

Java中Arrays类的copyOf函数的常见用法介绍

发布时间:2023-10-02 06:12:41

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()方法是一个非常方便的数组复制工具,可以用于复制整个数组、复制指定长度的数组、复制指定范围的数组以及复制多维数组。根据不同的需求,选择不同的重载版本即可实现所需要的功能。使用该方法可以避免手动实现数组复制的逻辑,提高代码的简洁性和可读性。