Java Arrays copyOfRange() 方法



描述

Java Arrays copyOfRange(U[] original, int from, int to, Class<? extends T[]> newType) 方法将指定数组的指定范围复制到一个新数组中。范围的初始索引 (from) 必须介于 0 和 original.length 之间(包括 0 和 original.length)。original[from] 的值被放置到副本的初始元素中(除非 from == original.length 或 from == to)。

来自原始数组后续元素的值被放置到副本中的后续元素中。范围的最终索引 (to) 必须大于或等于 from,可以大于 original.length,在这种情况下,null 被放置到副本中所有索引大于或等于 original.length - from 的元素中。返回数组的长度将为 to - from。生成的数组属于 newType 类。

声明

以下是 java.util.Arrays.copyOfRange() 方法的声明

public static <T,U> T[] copyOfRange(U[] original, int from, int to, Class<? extends T[]> newType)

参数

  • original − 这是要从中复制范围的数组。

  • from − 这是要复制范围的初始索引(包含)。

  • to − 这是要复制范围的最终索引(不包含)。

  • newType − 要返回的副本的类

返回值

此方法返回一个新数组,其中包含原始数组中指定的范围,截断或填充 null 以获得所需的长度。

异常

  • ArrayIndexOutOfBoundsException − 如果 from < 0 或 from > original.length()

  • IllegalArgumentException − 如果 from > to。

  • NullPointerException − 如果 original 为 null。

  • ArrayStoreException − 如果从 original 复制的元素不是可以在 newType 类的数组中存储的运行时类型。

将对象数组复制到相同大小的数组示例

以下示例演示了 Java Arrays copyOfRange() 方法的使用。首先,我们创建了一个 Monitor 对象的数组。我们打印了它们。使用 copyOfRange() 方法创建了一个相同大小的数组副本,并进行了打印。

package com.tutorialspoint;

import java.util.Arrays;

public class ArrayDemo {
   public static void main(String[] args) {

      Student[] studentArr = { new Monitor(1, "Julie", false), new Monitor(2, "Robert", true), new Monitor(3, "Adam", false) };

      System.out.print("Student Array: [");
      for (int i = 0; i < studentArr.length; i++) {
         System.out.print(studentArr[i] + " ");
      }
      System.out.print("]\nCopied Arrays: \n");

      // Create copy of the array of same size
      Monitor[] studentArrCopy = Arrays.copyOfRange(studentArr, 0, 3, Monitor[].class);

      System.out.print("Student Array: [");
      for (int i = 0; i < studentArrCopy.length; i++) {
         System.out.print(studentArrCopy[i] + " ");
      }
      System.out.print("]");
   }
}
class Student {
   int rollNo;
   String name;

   Student(int rollNo, String name){
      this.rollNo = rollNo;
      this.name = name;
   }

   @Override
   public String toString() {
      return "[ " + this.rollNo + ", " + this.name + " ]";
   }
}

class Monitor extends Student{

   boolean priviledges;

   Monitor(int rollNo, String name, boolean priviledges) {
      super(rollNo, name);
      this.priviledges = priviledges;
   }

   @Override
   public String toString() {
      return "[ " + this.rollNo + ", " + this.name + ", " + this.priviledges + " ]";
   }
}

输出

让我们编译并运行以上程序,这将产生以下结果:

Student Array: [[ 1, Julie, false ] [ 2, Robert, true ] [ 3, Adam, false ] ]
Copied Arrays: 
Student Array: [[ 1, Julie, false ] [ 2, Robert, true ] [ 3, Adam, false ] ]

将对象数组复制到更大大小的数组示例

以下示例演示了 Java Arrays copyOfRange() 方法的使用。首先,我们创建了一个 Monitor 对象的数组。我们打印了它们。使用 copyOfRange() 方法创建了一个更大大小的数组副本,并打印了附加的默认值。

package com.tutorialspoint;

import java.util.Arrays;

public class ArrayDemo {
   public static void main(String[] args) {

      Student[] studentArr = { new Monitor(1, "Julie", false), new Monitor(2, "Robert", true), new Monitor(3, "Adam", false) };

      System.out.print("Student Array: [");
      for (int i = 0; i < studentArr.length; i++) {
         System.out.print(studentArr[i] + " ");
      }
      System.out.print("]\nCopied Arrays: \n");

      // Create copy of the array of greater size
      Monitor[] studentArrCopy = Arrays.copyOfRange(studentArr, 1, 5, Monitor[].class);

      System.out.print("Student Array: [");
      for (int i = 0; i < studentArrCopy.length; i++) {
         System.out.print(studentArrCopy[i] + " ");
      }
      System.out.print("]");
   }
}
class Student {
   int rollNo;
   String name;

   Student(int rollNo, String name){
      this.rollNo = rollNo;
      this.name = name;
   }

   @Override
   public String toString() {
      return "[ " + this.rollNo + ", " + this.name + " ]";
   }
}

class Monitor extends Student{

   boolean priviledges;

   Monitor(int rollNo, String name, boolean priviledges) {
      super(rollNo, name);
      this.priviledges = priviledges;
   }

   @Override
   public String toString() {
      return "[ " + this.rollNo + ", " + this.name + ", " + this.priviledges + " ]";
   }
}

输出

让我们编译并运行以上程序,这将产生以下结果:

Student Array: [[ 1, Julie, false ] [ 2, Robert, true ] [ 3, Adam, false ] ]
Copied Arrays: 
Student Array: [[ 2, Robert, true ] [ 3, Adam, false ] null null ]

将对象数组复制到更小大小的数组示例

以下示例演示了 Java Arrays copyOfRange() 方法的使用。首先,我们创建了一个 Monitor 对象的数组。我们打印了它们。使用 copyOfRange() 方法创建了一个更小大小的数组副本,并进行了打印。

package com.tutorialspoint;

import java.util.Arrays;

public class ArrayDemo {
   public static void main(String[] args) {

      Student[] studentArr = { new Monitor(1, "Julie", false), new Monitor(2, "Robert", true), new Monitor(3, "Adam", false) };

      System.out.print("Student Array: [");
      for (int i = 0; i < studentArr.length; i++) {
         System.out.print(studentArr[i] + " ");
      }
      System.out.print("]\nCopied Arrays: \n");

      // Create copy of the array of lesser size
      Monitor[] studentArrCopy = Arrays.copyOfRange(studentArr, 1, 2, Monitor[].class);

      System.out.print("Student Array: [");
      for (int i = 0; i < studentArrCopy.length; i++) {
         System.out.print(studentArrCopy[i] + " ");
      }
      System.out.print("]");
   }
}
class Student {
   int rollNo;
   String name;

   Student(int rollNo, String name){
      this.rollNo = rollNo;
      this.name = name;
   }

   @Override
   public String toString() {
      return "[ " + this.rollNo + ", " + this.name + " ]";
   }
}

class Monitor extends Student{

   boolean priviledges;

   Monitor(int rollNo, String name, boolean priviledges) {
      super(rollNo, name);
      this.priviledges = priviledges;
   }

   @Override
   public String toString() {
      return "[ " + this.rollNo + ", " + this.name + ", " + this.priviledges + " ]";
   }
}

输出

让我们编译并运行以上程序,这将产生以下结果:

Student Array: [[ 1, Julie, false ] [ 2, Robert, true ] [ 3, Adam, false ] ]
Copied Arrays: 
Student Array: [[ 2, Robert, true ] ]
java_util_arrays.htm
广告

© . All rights reserved.