Java Arrays copyOfRange() 方法



描述

java.util.Arrays.copyOfRange(T[] original, int from, int to) 方法將指定陣列的指定範圍複製到一個新陣列中。範圍的起始索引 (from) 必須在 0 和 original.length 之間(包含 0 和 original.length)。original[from] 的值將被放置到副本的初始元素中(除非 from == original.length 或 from == to)。原始陣列中後續元素的值將被放置到副本中的後續元素中。

範圍的最終索引 (to) 必須大於或等於 from,並且可以大於 original.length,在這種情況下,索引大於或等於 original.length - from 的副本中的所有元素都將放置 null 值。返回陣列的長度將為 to - from。

宣告

以下是 java.util.Arrays.copyOfRange() 方法的宣告

public static <T> T[] copyOfRange(T[] original, int from, int to)

引數

  • original − 這是要從中複製範圍的陣列。

  • from − 這是要複製的範圍的起始索引(包含)。

  • to − 這是要複製的範圍的結束索引(不包含)。

返回值

此方法返回一個新陣列,其中包含原始陣列中指定的範圍,並截斷或填充零以獲得所需的長度。

異常

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

  • IllegalArgumentException − 如果 from > to。

  • NullPointerException − 如果 original 為 null。

將物件陣列複製到相同大小的陣列示例

以下示例演示了 Java Arrays copyOfRange() 方法的用法。首先,我們建立了一個 Student 物件陣列。我們列印了它們。使用 copyOfRange() 方法建立了一個相同大小的陣列副本並打印出來。

package com.tutorialspoint;

import java.util.Arrays;

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

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

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

      System.out.print("]\nCopied Array: \n");

      // Create copy of the array of same size
      Student[] studentArrCopy = Arrays.copyOfRange(studentArr, 0, 3);
     
      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 + " ]";
   }
}

輸出

讓我們編譯並執行上述程式,這將產生以下結果:

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

將物件陣列複製到更大大小的陣列示例

以下示例演示了 Java Arrays copyOfRange() 方法的用法。首先,我們建立了一個 Student 物件陣列。我們列印了它們。使用 copyOfRange() 方法建立了一個更大大小的陣列副本,並打印出附加的預設值。

package com.tutorialspoint;

import java.util.Arrays;

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

      Student[] studentArr = { new Student(1, "Julie"), new Student(2, "Robert"), new Student(3, "Adam") };
      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
      Student[] studentArrCopy = Arrays.copyOfRange(studentArr, 1, 5);

      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 + " ]";
   }
}

輸出

讓我們編譯並執行上述程式,這將產生以下結果:

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

將物件陣列複製到更小大小的陣列示例

以下示例演示了 Java Arrays copyOfRange() 方法的用法。首先,我們建立了一個 Student 物件陣列。我們列印了它們。使用 copyOfRange() 方法建立了一個更小大小的陣列副本,並打印出附加的預設值。

package com.tutorialspoint;

import java.util.Arrays;

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

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

      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
      Student[] studentArrCopy = Arrays.copyOfRange(studentArr, 1, 2);

      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 + " ]";
   }
}

輸出

讓我們編譯並執行上述程式,這將產生以下結果:

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