Arrays.Copy和System.arraycopy的使用

Arrays.copy的使用:
        /**
         * 第一个参数为源数组
         * 第二参数为目标数组的长度
         */
        array = Arrays.copyOf(array, array.length - 1);
System.arraycopy的使用:
        /**
         * 表示从src中从srcPos到srcPos+length-1的位置截取出来复制到dest中的destPos到destPos+length-1
         * 第一个参数为源数组src
         * 第二参数为源数组开始截取的位置srcPos,从srcPos到(srcPos + length -1)
         * 第三个参数为目标数组dest
         * 第四个参数为目标数组开始接收的位置destPos
         * 第五个参数为截取的长度length
         */
        System.arraycopy(array, index + 1, array, index, array.length - index - 1);
        

测试:

    public static void main(String[] args) {
        //数组的拷贝
        int[] array = {1, 2, 3, 4, 5, 6};
        System.out.println("Before removeByFor:");
        printArray(array);

        array = removeByFor(array, 2);
        System.out.println("After removeByFor:");
        printArray(array);

        System.out.println("Before removeByCopy:");
        printArray(array);
        array = removeByCopy(array, 2);
        System.out.println("After removeByCopy:");
        printArray(array);

    }

    public static int[] removeByFor(int[] array, int index) {
        if (index < 0 || index > array.length)
            throw new IndexOutOfBoundsException();
        for (int i = index; i < array.length - 1; i++) {
            array[i] = array[i + 1];
        }
        /**
         * 第一个参数为源数组
         * 第二参数为目标数组的长度
         */
        array = Arrays.copyOf(array, array.length - 1);
        return array;
    }

    public static int[] removeByCopy(int[] array, int index) {
        if (index < 0 || index > array.length)
            throw new IndexOutOfBoundsException();
        /**
         * 表示从src中从srcPos到srcPos+length-1的位置截取出来复制到dest中的destPos到destPos+length-1
         * 第一个参数为源数组src
         * 第二参数为源数组开始截取的位置srcPos,从srcPos到(srcPos + length -1)
         * 第三个参数为目标数组dest
         * 第四个参数为目标数组开始接收的位置destPos
         * 第五个参数为截取的长度length
         */
        System.arraycopy(array, index + 1, array, index, array.length - index - 1);
        array = Arrays.copyOf(array, array.length - 1);
        return array;
    }

    public static void printArray(int[] array) {
        for (int i = 0; i < array.length; i++) {
            System.out.print(array[i] + " ");
        }
        System.out.println();
    }

测试结果:
Before removeByFor:
1 2 3 4 5 6 
After removeByFor:
1 2 4 5 6 
Before removeByCopy:
1 2 4 5 6 
After removeByCopy:
1 2 5 6 
建议:

进行数组拷贝时,可以直接使用Arrays.copy方法,对于要删除或添加数组中的元素再返回新的数组,可以使用System.arraycopy方法。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,778评论 18 399
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,991评论 19 139
  • java笔记第一天 == 和 equals ==比较的比较的是两个变量的值是否相等,对于引用型变量表示的是两个变量...
    jmychou阅读 1,525评论 0 3
  • 一.线性表 定义:零个或者多个元素的有限序列。也就是说它得满足以下几个条件:  ①该序列的数据元素是有限的。  ②...
    Geeks_Liu阅读 2,715评论 1 12
  • 我打了个盹儿, 秋就没了, 于是,我懊恼自己 又错过了一季花开。 只得卷着极寒, 瞄你一眼。 又害怕被你发现, 只...
    初南奚阅读 269评论 0 5