java 任意数组的拷贝_java之实现任意数组拷贝

f05525ab51bc

image.png

这一路走走停停,顺着少年漂流的痕迹,迈出车站的前一刻,竟有些犹豫.....风吹起了从前,最近喜欢单曲循环这首歌《起风了》,频幕对面的老铁们可以去听听,感觉不错哦,今天我们来了解一下,在java中如何实现数组的任意拷贝,我们可能经常使用arrayCopy这个方法,那我们今天就来实现一下自己的arrayCopy方法,老铁们觉得怎么样?直接上代码吧:

我们先来了解arrayCopy这个方法所需要的参数:

> public static void arrayCopy(Object,src,int srcPos, Object dest, int destPos, int length)

参数:

src:源数组

srcPos:源数组中的起始位置

dest:目标数组

destPos:目标数组中的起始位置

length:要复制数组元素的数量

在进行数组拷贝的过程中,我们需要判断该数组是否为空等,防止抛异常,在官方的API中我们可以发现:

f05525ab51bc

QQ截图20180506205747.png

从上面API中可以发现,这些异常我们可以避免,so 直接从代码看:

代码示例:

public class ArrayCopyDemo {

public static void main(String[] args) {

定义原数组

int[] src = new int[] {1,2,3,4,5,6,7,8,9,10};

目标数组的初始容量

int[] dest= new int[10];

arraycopy(src,2,dest,3,4);

System.out.println(Arrays.toString(dest));

}

public static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length)

{

if (src == null || dest == null) {

throw new NullPointerException("源和目的数组不能为空");

}

if (!src.getClass().isArray()|| !dest.getClass().isArray() ) {

throw new ArrayStoreException("源和目标必须是数组");

}

if (srcPos < 0 ||destPos < 0 || length <0|| srcPos+length > Array.getLength(src)

|| destPos +length > Array.getLength(dest)) {

throw new IndexOutOfBoundsException("索引越界");

}

if (src.getClass().getComponentType() !=

dest.getClass().getComponentType()) {

throw new ArrayStoreException("源和目标元素类型要一致");

}

for (int index = srcPos; index

获取需要拷贝的原数组

Object value = Array.get(src, index);

给目标数组添加元素

Array.set(dest,destPos,value);

destPos++;

}

}

}

结果如下:

f05525ab51bc

QQ截图20180506211219.png

哈哈,很简单吧,我们实现了数组拷贝,自己可以动手试试!!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值