获取数组的固定长度的子数组
2011-12-01 09:34
295 查看
在工作当中,经常会碰到求一个给定数组的固定长度的子数组,比如给定一个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的,而是具体的八种原生类的包装类的类型,则不需要上面获得具体数组类型的步骤。
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的,而是具体的八种原生类的包装类的类型,则不需要上面获得具体数组类型的步骤。
相关文章推荐
- C或C++获取数组长度
- 关于sizeof在调用函数中获取被调函数数组长度的思考
- c/c++ 获取数组长度
- 从指定文件(字节数组)获取内容以及获取长度
- C/C++中如何获取数组的长度?
- jquery 获取select数组与name数组长度的实现代码
- 为什么如此获取Java数组的长度
- C/C++中如何获取数组的长度?
- js数组长度获取问题?
- 获取数组长度的方法
- 每日一练——从长度为n的数组里选出m个数使和为固定值sum
- js如何获取json数组的长度
- C#中如何获取一个二维数组的两维长度,即行数和列数?以及多维数组各个维度的长度?
- c语言获取数组长度
- C/C++中如何获取数组的长度?
- 生成某个范围内N个不重复随机数与生成固定长度数组
- C/C++ 获取数组的有效长度
- C/C++中如何获取数组的长度?
- Sencha Touch对象数组如何获取长度(有多少组)
- php获取数组长度的方法(有实例)