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
,比利用循环复制数组效率要高很多。