Java数组复制的几种方法

阅读数:63 评论数:0

跳转到新版页面

分类

python/Java

正文

一、Arrays.copyOf

实际内部调用的System.arraycopy()方法

Arrays.copyOf(dataType[] srcArray, int length);
srcArray 表示要进行复制的数组
length 表示复制后的新数组的长度

二、System.arraycopy

//从指定的源数组开始复制数组指定位置,指向目标数组的指定位置。
public static native void arraycopy(Object src,  int  srcPos,
                                        Object dest, int destPos,
                                        int length);
src 源数组
srcPos 源数组中的起始索引(包含)
dest 目标数组
destPos 目标数组中的起始索引(不包含)
length 要复制的源数组长度

三、Arrays.copyOfRange

实际内部调用的也是System.arraycopy方法。

Arrays.copyOfRange(dataType[] srcArray, int fromIndex, int enIndex);
srcArray 源数组
fromIndex 开始数组复制的起始索引,目标数组中将包含起始索引对应的元素
endIndex 开始数组复制结束索引,目标数组中将不包含终止索引对应的元素

四、Object.clone

因为数组也是一个 Object 类,因此也可以使用数组对象的 clone() 方法来复制数组。

protected native Object clone() throws CloneNotSupportedException;

clone() 方法是一个本地方法,返回值Object 类型,要使用强制类型转换为适当的类型。

五、效率对比

数据量 第1 第2 第3 第4 第5
100 for arraycopy copyOfRange clone copyOf
200 arraycopy for clone copyOfRange copyOf
1000 arraycopy clone copyOfRange for copyOf
2000 arraycopy clone copyOfRange for copyOf
10000 arraycopy clone copyOfRange copyOf for
20000 arraycopy copyOf clone copyOfRange for

 




相关推荐