获取数组的固定长度的子数组

在工作当中,经常会碰到求一个给定数组的固定长度的子数组,比如给定一个Object类型的array[],并且给定startIndexInclusive和endIndexExclusive,这两个参数分别表示从给定数组的哪个位置开始取,endIndexExclusive表示取到此位置为止,并且不能包括array[endIndexExclusive]这个值。首先我们得判断array[]是否为空,如果为空直接返回null,继而要判断startIndexInclusive是否小于0,如果小于0则将0赋值给startIndexInclusive,接着要判断endIndexExclusive是否大于array.length,如果是则将array.length赋值给endIndexExclusive。接着我们要定义子数组的长度为endIndexExclusive-startIndexInclusive。因为我们给定的数组类型是Object类型的,这里要取得具体的array的类型,使用Class type = ((Object) (array)).getClass().getComponentType();来获得具体的数组类型。现在要判断定义出来的子数组长度是否为大于0,如果不是则使用Object emptyArray[] = (Object[]) Array.newInstance(type, 0);来构造一个长度为0类型为type的新数组,并且返回这个新数组。如果大于0则使用Object emptyArray[] = (Object[]) Array.newInstance(type, endIndexExclusive-startIndexInclusive);来构造一个固定长度的新数组,之后使用System.arraycopy(((Object) (array)), startIndexInclusive,((Object) (subarray)), 0, newSize);来讲就数组中的值拷贝到新数组固定位置上并返回这个数组。当然如果我们传入的数组类型不是Object的,而是具体的八种原生类的包装类的类型,则不需要上面获得具体数组类型的步骤。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值