美文网首页
将一个数组的某一部分复制到另一个新的数组

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

作者: 钦点秀才 | 来源:发表于2017-09-22 08:43 被阅读170次

在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
    )

相关文章

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

    在Java中对ArrayList进行操作时,如何需要将一个数组的某一部分复制到另一个新的数组(即值传递),Syst...

  • Go copy 函数学习笔记

    Go语言的内置函数 copy() 可以将一个数组切片复制到另一个数组切片中,如果加入的两个数组切片不一样大,就会按...

  • System.arraycopy()方法介绍及使用

    作用:将指定源数组中的数组从指定位置复制到目标数组的指定位置。 参数: src - 源数组。 srcPos - 源...

  • 对象的深拷贝

    数组的深拷贝 遍历数组赋值给一个新的数组 Array.prototype.slice将原数组中抽离部分出来形成一个...

  • NumPy API(三)——输入和输出数组操作

    数组操作 基本操作 copyto(dst, src[, casting, where]) 将值从一个数组复制到另一...

  • 数组的移位

    如何将我们的数组整体向前移位呢?我们可以考虑使用System.arraycopy方法来进行,将原有的数组复制到新的...

  • 神奇索引

    神奇索引是 NumPy 中的术语,描述使用整数数组进行数据索引。 神奇索引与切片不同,它总是将数据复制到一个新的数组中。

  • 深浅拷贝

    浅拷贝将原对象/原数组的引用直接赋值给新对象/新数组,新对象/新数组只是原对象/原数组的一个引用。 深拷贝将原对象...

  • 9.1.3-案例:一维数组合并

    数组的长度不可变,要想合并两个不同的数组,不能在一个数组上追加另一个数组实现,需要创建一个新的数组,新数组长度是两...

  • 如何取出数组中相同的元素,然后组建一个二维数组

    //将一维数组中相同的对象类型 添加到一个新数组,将所有的新数组放在一个大数组中 转为二维数组 arrayrese...

网友评论

      本文标题:将一个数组的某一部分复制到另一个新的数组

      本文链接:https://www.haomeiwen.com/subject/whpxextx.html