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 |