将一个数组的某一部分复制到另一个新的数组

在Java中对ArrayList进行操作时,如何需要将一个数组的某一部分复制到另一个新的数组(即值传递),System提供了一个静态方法arraycopy(),我们可以使用它来实现数组之间的复制,其函数原型是:
public static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length)
其中:
src:源数组;
srcPos:源数组要复制的起始位置;
dest:目的数组;
destPos:目的数组放置的起始位置;
length:复制的长度。
在使用过程中,发现该方法十分方便,不知道是不是有前辈在OC上封装了此方法,也没有经过查找官方提供的接口,就自己弄了个函数:

  • (void)arrayCopy:(NSMutableArray *)src srcPods:(int)srcPods dest:(NSMutableArray *)dest destPods:(int)destPods lenght:(int)length;
    在使用此方法时与Java一样需要注意:
    1、src and dest都必须是同类型或者可以进行转换类型的数组
    2、源的起始位置+长度不能超过末尾
    3、目标起始位置+长度不能超过末尾
    4、所有的参数不能为负数
    附上方法的实现和应用:

  • (void)arrayCopy:(NSMutableArray *)src srcPods:(NSInteger)srcPods dest:(NSMutableArray *)dest destPods:(NSInteger)destPods lenght:(NSInteger)length{
    if (src == nil) {
    return;
    }
    if (srcPods < 0 || destPods < 0 || length < 0|| srcPods>src.count) {
    return;
    }
    if (src == dest && srcPods< destPods && destPods < srcPods+length) {
    for (NSInteger i = length - 1; i >= 0 ; --i) {
    dest[destPods + i] = src[srcPods + i];
    }
    }else{
    for (int i = 0; i < length; ++i) {
    dest[destPods+i] = src[srcPods+i];
    }
    }
    }
    应用:NSMutableArray *src = [NSMutableArray arrayWithObjects:@"1",@"2",@"3",@"4",@"5",@"6",@"7",@"8",@"9", nil];//源数组
    NSMutableArray *dest = [[NSMutableArray alloc]init];//目标数组
    [self arrayCopy:src srcPods:0 dest:dest destPods:0 lenght:5];//方法调用,注意此处参数destPods的开始位置为0
    打印结果:dest is: (
    1,
    2,
    3,
    4,
    5
    )

你可能感兴趣的:(将一个数组的某一部分复制到另一个新的数组)