copyOfRange
public static int[] copyOfRange(int[] original,
int from,
int to)
-
將指定數組的指定範圍複製到一個新數組。該範圍的初始索引 (
from
) 必須位於 0 和
original.length
(包括)之間。 -
original[from]
處的值放入副本的初始元素中(除非from == original.length
或from == to
)。原數組中後續元素的值放入副本的後續元素。 -
該範圍的最後索引 (to)(必須大於等於 from)可以大於
original.length
,在這種情況下,0 被放入索引大於等於
original.length - from
的副本的所有元素中。返回數組的長度爲to - from
。
參數
- original - 將要從其複製一個範圍的數組
- from - 要複製的範圍的初始索引(包括)
- to - 要複製的範圍的最後索引(不包括)。(此索引可以位於數組範圍之外)。
返回
包含取自原數組指定範圍的新數組,截取或用 0 填充以獲得所需長度
拋出
- ArrayIndexOutOfBoundsException - 如果 from < 0 或 from > original.length()
- IllegalArgumentException - 如果 from > to
- NullPointerException - 如果 original 爲 null
測試
public static void main(String[] args) {
int[] original = new int[]{1, 2, 3, 4, 5, 6};
int[] a = Arrays.copyOfRange(original, 1, 4);
System.out.println("參數to小於original.length:"+Arrays.toString(a));
int[] b = Arrays.copyOfRange(original, 1, 8);
System.out.println("參數to大於original.length(超出部分用0補齊):"+Arrays.toString(b));
}
Tips:這個方法在一些處理數組的算法題中很好用,效率和clone
基本一致,都是native method
,比利用循環複製數組效率要高很多。